矩阵作为R中数据帧的元素

时间:2016-09-17 21:11:13

标签: r list matrix

我有一个lapply函数,它遍历一个元素列表。对于每个元素,结果是一个矩阵。根据元素列表和矩阵列表,我想返回一个表格的数据框列表

element1, matrix1
element2, matrix2
...
...
elementn, matrixn

示例:

e <- list(1,2)
r <- lapply(e, function(x) matrix(ncol = x, nrow = x))

我想获得一个包含这些元素的列表

(1, matrix(1x1))
(2, matrix(2x2))

1 个答案:

答案 0 :(得分:1)

您可以在lapply函数中构造数据框,其中I(list(...))可以将矩阵包装为数据框中的一个元素:

r <- lapply(e, function(x) data.frame(element = x, mat = I(list(matrix(ncol = x, nrow = x)))))

这给出了一个数据框列表:

r
# [[1]]
#   element mat
# 1       1  NA

# [[2]]
#   element          mat
# 1       2 NA, NA, ....

您可以将结果与do.call(rbind, ...)

结合在一起
do.call(rbind, r)
#   element          mat
# 1       1           NA
# 2       2 NA, NA, ....