【发布时间】:2019-04-21 14:06:43
【问题描述】:
我正在尝试加入存储在嵌套列表中的矩阵并将它们放入一个新列表中。例如,如果我有一个水果列表,我想获取存储在Kiwi 下的各种矩阵,并将它们连接在一起作为一个新列表中的一个矩阵。
这将生成一些看起来像我的数据的东西:
#Define some important things
Fruits = c('Mango', 'Kiwi')
Attr = c('Size', 'Shape')
#generate empty lists
MyFruitList <- lapply(Fruits, function(q) {
EmptySublist <- (setNames(vector("list", length(Fruits)), Attr))
})
names(MyFruitList) <- Fruits
#Full lists with example matrices
MyFruitList[['Mango']][['Size']] <- matrix(c(3,5,7,2), nrow=2, ncol=2)
MyFruitList[['Mango']][['Shape']] <- matrix(c(3,6,7,5), nrow=2, ncol=2)
MyFruitList[['Kiwi']][['Size']] <- matrix(c(1,3,4,2), nrow=2, ncol=2)
MyFruitList[['Kiwi']][['Shape']] <- matrix(c(2,4,5,1), nrow=2, ncol=2)
这是我一直在尝试使用的将存储在 Kiwi 和 Mango 下的矩阵移动到新列表中的方法。
#Obviously this doesn't actually work
MyFruitListAsRows <- lapply(Fruits, function(i) {
MyFruitListAsRows <- matrix(cbind(paste0(MyFruitList[i])))
})
names(MyFruitListAsRows) <- paste0(Fruits, "Row")
理想情况下,我应该最终得到一个名为 MyFruitsAsRows 的列表,其中包含名为 Kiwi 和 Mango 的 2、4 x 2 矩阵,分别包含来自原始 MyFruitList 列表的 Size 和 Shape 数据.
例如对于 Mango,它看起来像这样:
[,1] [,2] [,3] [,4]
[1,] 3 7 3 7
[2,] 5 2 6 5
(抱歉,数字过于相似,计划不周,一开始可能很难认出我希望我的数字去哪里)
由此构建:
$Size
[,1] [,2]
[1,] 3 7
[2,] 5 2
$Shape
[,1] [,2]
[1,] 3 7
[2,] 6 5
编辑:我尝试采纳 Ronak Shah 的建议并做了以下工作:
library(tidyverse)
MyFruitListAsRows <- map(MyFruitList[i], bind_cols)
但同时运行,
MyFruitListAsRows[['KiwiRow']]
MyFruitListAsRows[['MangoRow']]
生产:
I get Error in x[i, , drop = FALSE] : subscript out of bounds
如果我尝试让 RStudio 在窗口中显示我的任一新列表中的内容,RStudio 会遇到致命错误并崩溃。
【问题讨论】: