gpt4 book ai didi

R:将非对称列表转换为矩阵 - 每个子列表中的元素数量不同

转载 作者:行者123 更新时间:2023-12-04 17:54:16 24 4
gpt4 key购买 nike

我有一个非对称列表,即每个子列表中的元素数量不同。如何将列表转换为矩阵?

下面我从一个对称列表开始,并以两种不同的方式将其转换为矩阵。

# create a symmetric list

my.list1 <- list(c(1,2,3,4),c(5,6,7,8),c(9,10,11,12))
my.list1

# convert symmetric list to a matrix

mat.a1 <- matrix( unlist(my.list1), nrow=length(my.list1), byrow=T )
mat.a1

# alternative method to convert symmetric list to a matrix

mat.b1 <- do.call(rbind, my.list1)
mat.b1

接下来我创建一个非对称列表:
# create an asymmetric list

my.list2 <- list(c(1,2,3,4),c(5,6,7,8,9),c(10,11,12,13))
my.list2

这是所需的矩阵:
# desired result

# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 2 3 4 NA
# [2,] 5 6 7 8 9
# [3,] 10 11 12 13 NA

最佳答案

首先,使用 NA 扩展列表中的每个向量以获得相同长度的向量。然后创建你的矩阵。例如:

max.len <- max(sapply(my.list2, length))
corrected.list <- lapply(my.list2, function(x) {c(x, rep(NA, max.len - length(x)))})
mat <- do.call(rbind, corrected.list)

关于R:将非对称列表转换为矩阵 - 每个子列表中的元素数量不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com