R列表到数据帧
我有一个嵌套的数据列表。 它的长度是132,每个项目是一个长度为20的列表。有没有一种快速的方法将这种结构转换成一个有132行和20列数据的数据框?
我是R新手,所以我想这可能是一个简单的方法。 我在这里搜索了Stack Overflow,找不到类似的问题,所以我很抱歉如果我错过了。 一些示例数据:
l <- replicate(
132,
list(sample(letters, 20)),
simplify = FALSE
)
假设你的列表被列为l
:
df <- data.frame(matrix(unlist(l), nrow=132, byrow=T))
上面的代码将所有字符列转换为因子,为了避免这种情况,您可以在data.frame()调用中添加一个参数:
df <- data.frame(matrix(unlist(l), nrow=132, byrow=T),stringsAsFactors=FALSE)
用rbind
do.call(rbind.data.frame, your_list)
编辑:以前版本的回报data.frame
的list
的替代载体(如@IanSudbery在评论中指出)。
您可以使用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相同的结果。
链接地址: http://www.djcxy.com/p/70903.html上一篇: R list to data frame