组合列表中的向量以创建数据框 R [重复]

Posted

技术标签:

【中文标题】组合列表中的向量以创建数据框 R [重复]【英文标题】:Combine Vectors inside of a List to Create a Dataframe R [duplicate] 【发布时间】:2014-09-19 05:47:51 【问题描述】:

我有一个大小均匀的字符向量列表,我希望将它们有效地组合到一个数据帧中,列表中的向量成为新数据帧的行。在下面,ls 是我的列表,df 是我预先分配的数据框。

ls <- list(c("r1c1", "r1c2", "r1c3"),
           c("r2c1", "r2c2", "r2c3"))

df <- data.frame(col1 = character(), col2 = character(), col3 = character(),
                 stringsAsFactors = F)

# Desired Result:
  col1   col2   col3
1  r1c1   r1c2   r1c3       
2  r2c1   r2c2   r2c3  

到目前为止,我已经尝试过rbind(df, ls),它似乎按列创建了新的数据框,这样df 看起来像:

  c..r1c1....r1c2....r1c3.. c..r2c1....r2c2....r2c3..
4                      r1c1                      r2c1
5                      r1c2                      r2c2
6                      r1c3                      r2c3

我还尝试在 for 循环中执行 rbind

for (i in 1:length(ls))
  df <- rbind(df, ls[[i]])

然而,这给了我警告消息:invalid factor level, NA generated,尽管我最初将stringsAsFactors 设置为 false。当在较大的列表上不断执行时,Rbind 似乎也是一个缓慢的过程,所以我想尽可能减少它的使用。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你可以使用

 data.frame(do.call(rbind, ls))

作为将向量列表转换为矩阵然后是 data.frame 的一种快速简单的方法

【讨论】:

这对于任何远程大的东西都会很慢。如果你这样做L &lt;- do.call(Map,c(c,listname)) 然后这个方法:***.com/a/18748069/496803 它会快得多。

以上是关于组合列表中的向量以创建数据框 R [重复]的主要内容,如果未能解决你的问题,请参考以下文章

R语言——列表

在R中,获取数据框的子集,其中列中的值包含在列表中[重复]

从 R 中的数据框中删除重复的列组合

R使用标题向量创建空数据框[重复]

将数据帧列表转换为R中的单个数据帧[重复]

将R中的两个列表组合成一个数据框[重复]