R - 将列表转换为数据帧

标签 r list dataframe apply

有一个这样的列表,从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/

相关文章:

r - 如何从源代码安装 R 包?

r - 获取 plot() 边界框值

python - logger.removeHandler(logger.handlers[0]) 如何抛出 ValueError : list. 删除(x) : x not in list?

Python Pandas - 根据值是否出现在多天内分配字符串

python - pandas 数据框 reshape /透视

arrays - 根据维度名称聚合数组

c - 对 R 包的/src 文件夹中的代码进行单元测试?

python - 如何在 pandas 中创建一个新列,其中包含与先前特定值的索引差异?

java - 列表到映射,键作为第一个字符,值作为与第一个字母键字符对应的单词

list - 序言列表。检查列表中的第一个和最后一个元素是否相似