我在SO中读到了很多关于将列表列表转换为df的答案。但是,我注意到它们的列表长度(在主要的大列表中)都是相同的。我有一个不同的案例:
h1 <- list(USA = c(10,13,17,11), RUSSIA = NULL, BRAZIL = NULL,
CHINA = c(11,11,10,8,12), TAIWAN = c(12,9,9,11,9,12,14), CHILE = NULL)我想把上面的列表h1转换成一个data.frame。我的预期输出应该是一个有2列的列表-- country_name,data.frame。如下所示:
country_name, list
USA [10, 13, 17, 11]
RUSSIA NULL
BRAZIL NULL
CHINA [11, 11, 10, 8, 12]
TAIWAN [12, 9, 9, 11, 9, 12, 14]
CHILE NULL我做了以下操作,但没有起作用:
do.call(rbind, h1)它试图使所有行的列号保持一致。我不想那样做。我想看看我怎样才能在这样的情况下使用ldply。任何建议都是值得感谢的。
发布于 2012-10-14 02:33:16
这里有一种方法:
R> as.data.frame(as.matrix(h1))
V1
USA 10, 13, 17, 11
RUSSIA NULL
BRAZIL NULL
CHINA 11, 11, 10, 8, 12
TAIWAN 12, 9, 9, 11, 9, 12, 14
CHILE NULL
R> as.data.frame(as.matrix(h1))['TAIWAN', ]
$TAIWAN
[1] 12 9 9 11 9 12 14发布于 2012-10-14 02:36:55
您可以将列表转换为矩阵,其中矩阵的每个元素都将是一个列表。
d1 <- data.frame(country_name=names(h1), list=matrix(h1))也就是说,我建议不要这样做,因为它不适合R范式。大多数R函数都假定矩阵包含来自一种原子类型的元素。
https://stackoverflow.com/questions/12875716
复制相似问题