我有一个嵌套的数据列表。它的长度是132,每一项都是一个长度为20的列表。有没有一种快速的方法可以将这个结构转换成一个有132行20列数据的数据帧?
以下是一些要使用的示例数据:
l <- replicate(
132,
as.list(sample(letters, 20)),
simplify = FALSE
)
发布于 2010-11-19 17:04:47
使用rbind
do.call(rbind.data.frame, your_list)
编辑:以前的版本返回list
的data.frame
,而不是向量(正如@IanSudbery在评论中指出的那样)。
发布于 2010-11-19 17:07:47
您可以使用plyr
包。例如,表单的嵌套列表
l <- list(a = list(var.1 = 1, var.2 = 2, var.3 = 3)
, b = list(var.1 = 4, var.2 = 5, var.3 = 6)
, c = list(var.1 = 7, var.2 = 8, var.3 = 9)
, d = list(var.1 = 10, var.2 = 11, var.3 = 12)
)
现在的长度为4,l
中的每个列表都包含另一个长度为3的列表。
library (plyr)
df <- ldply (l, data.frame)
并且应该会得到与答案@Marek和@nico相同的结果。
发布于 2010-11-19 17:07:39
修复样本数据,使其与原始描述“每个项目都是一个长度为20的列表”相匹配。
mylistlist <- replicate(
132,
as.list(sample(letters, 20)),
simplify = FALSE
)
我们可以将其转换为数据框,如下所示:
data.frame(t(sapply(mylistlist,c)))
sapply
将其转换为矩阵。data.frame
将矩阵转换为数据帧。
结果是:
https://stackoverflow.com/questions/4227223
复制相似问题