【发布时间】:2017-03-10 12:20:08
【问题描述】:
我有一个包含矩阵列表的列表,如下所示:
set.seed(123)
mat1 <- matrix(rnorm(9,1,2), ncol=3, nrow=3)
mat2 <- matrix(rnorm(9,1,3), ncol=3, nrow=3)
mynames <- c("a","b","c")
colnames(mat1) <- mynames
colnames(mat2) <- mynames
rownames(mat1) <- mynames
rownames(mat2) <- mynames
finallist <- list(val1 = list(subval1 = mat1), val2 = list(subval1 = mat2))
我希望得到如下输出:
goal <- data.frame(val1 = rnorm(9,1,2), val2 = rnorm(9,1,3), subval = rep("subval1",9), origrownames = rep(mynames, 3), origcolumnnames = rep(mynames,each=3))
我知道可能有一个可以使用 reshape 的中间数据框,但我似乎无法接近。我试过do.call("rbind", finallist),但这似乎并没有保留顶级列表和子列表的名称。此外,每个子列表包含 2000 个矩阵,每个矩阵的维度为 20x20,我计划使用此函数 20 多次,所以我正在寻找不太慢的东西。
【问题讨论】:
-
您的
goal数据框由 27 行组成,每个值包含 3 次。这是有意的还是您想要一个只有 9 行的goal数据框? -
@gebi 啊,对不起。应该是
origrownames = rep(mynames,3)