有一个这样的列表,从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
关于R - 将列表转换为数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526860/