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.framelist的替代载体(如@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

下一篇: safe version of subset