R - 将列表转换为DataFrame

app*_*ver 5 r list apply dataframe

有一个这样的列表,从1开始.

[[7158]]
[1] 81 72

[[7159]]
[1] 81 69

[[7160]]
[1] 81 79

[[7161]]
[1] 81 84
Run Code Online (Sandbox Code Playgroud)

这需要更改为数据帧,其中每个元素中的第一个数字在一个数据帧列中对齐,每个元素中的第二个数字放在数据帧的第二列中.所以它应该像这样结束

> data.frame("col1" = c(81, 81, 81, 81), "col2" = c(72, 69, 79, 84))
  col1 col2
1   81   72
2   81   69
3   81   79
4   81   84
Run Code Online (Sandbox Code Playgroud)

我尝试过,do.call(rbind.data.frame, my_list)但它似乎将数字放在大量的列中,而不是将其强制转换为所需的两列.使用循环执行此操作将非常简单,但R方式是什么?谢谢.

Rol*_*and 8

只需设置名称:

mylist <- list(c(81,72), c(81,63), c(81,79))
setNames(do.call(rbind.data.frame, mylist), c("col1", "col2"))
#  col1 col2
#1   81   72
#2   81   63
#3   81   79
Run Code Online (Sandbox Code Playgroud)

与其他一些解决方案相比,这也适用于混合数据类型:

mylist <- list(list("a", 72), list("b", 63), list("c", 79))
res <- setNames(do.call(rbind.data.frame, mylist), c("col1", "col2"))
str(res)
#'data.frame':  3 obs. of  2 variables:
# $ col1: Factor w/ 3 levels "a","b","c": 1 2 3
# $ col2: num  72 63 79
Run Code Online (Sandbox Code Playgroud)


ber*_*ant 1

你可以尝试使用

Reduce( rbind, lapply(t1, t) )
Run Code Online (Sandbox Code Playgroud)