app*_*ver 5 r list apply dataframe
有一个这样的列表,从1开始.
[[7158]]
[1] 81 72
[[7159]]
[1] 81 69
[[7160]]
[1] 81 79
[[7161]]
[1] 81 84
这需要更改为数据帧,其中每个元素中的第一个数字在一个数据帧列中对齐,每个元素中的第二个数字放在数据帧的第二列中.所以它应该像这样结束
> 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
我尝试过,do.call(rbind.data.frame, my_list)但它似乎将数字放在大量的列中,而不是将其强制转换为所需的两列.使用循环执行此操作将非常简单,但R方式是什么?谢谢.
只需设置名称:
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
与其他一些解决方案相比,这也适用于混合数据类型:
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