【发布时间】:2012-03-15 00:40:30
【问题描述】:
在 R 中,我有一个多维列表。我可以访问以下元素:
results[["A1"]][["B2"]][["C1"]]
当然,上面语句的输出也是一个列表。
我想做的是这样的:
results[["A1"]][[*]][["C1"]]
或
results[["A1"]][[,]][["C1"]]
我想要的输出将是一个大列表,它是第二维中每个值(例如,“B1”、“B2”、...)的列表的串联。
这样的事情可能吗?我知道我可以迭代所需的维度:
for (i in 1:length(results[["A1"]])){
output = c(output, results[["A1"]][[i]][["C1"]]
}
但我想知道是否有更清洁的东西?我做错了吗?
【问题讨论】:
-
由于我面前没有样本数据,我无法确定您以什么开头或以什么结尾……但请查看
lapply和@ 987654326@ 和recursive=FALSE。这两个应该可以满足您的需求。 -
我不知道您是否仍希望它们在列表中,但使用 do.call("rbind",list) 将它们转换为数据框,然后对组进行子集化要容易得多。
-
@Justin:是的,这对我有用。谢谢!我最终使用了类似
unlist(lapply(results[["A1"]], FUN=function(x){x[["C1"]]}), recursive=F)
标签: r list multidimensional-array