我有一个嵌套列表:
list1 <- list("A"=c(1,1,1), "B"=c(2,2,2), "C"=c(3,3,3))
list2 <- list("F1" = list1, "F2" = list1)
我想将列表的最后一个级别(包含向量)作为数据帧,并且我想将列表的级别作为因子:
Level1 Level2 V1 V2 V3
1 F1 A 1 1 1
2 F1 B 2 2 2
3 F1 C 3 3 3
4 F2 A 1 1 1
5 F2 B 2 2 2
6 F2 C 3 3 3
第一部分很好地给出了:
data.frame(matrix(unlist(list2), ncol=3, byrow=T))
但是,我没有找到一种很好的方法来将列表级别名称作为同一数据框中的因素。有任何想法吗? :)
编辑:该过程应适用于 p 维。
最佳答案
“reshape2”中的
melt
有一个用于 list
的方法。也许它可以用在这种情况下。像这样的事情:
library(reshape2)
dcast(cbind(
coln = sequence(rapply(list2, length)),
melt(list2)), L1 + L2 ~ coln,
value.var = "value")
# L1 L2 1 2 3
# 1 F1 A 1 1 1
# 2 F1 B 2 2 2
# 3 F1 C 3 3 3
# 4 F2 A 1 1 1
# 5 F2 B 2 2 2
# 6 F2 C 3 3 3
关于R:将嵌套列表转换为数据框并获取列表级别和因子的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193028/