在列表中合并向量以创建数据框R

Eva*_*sky 0 r list vector dataframe rbind

我有一个大小均匀的字符向量列表,我希望将它们有效地组合到一个数据帧中,列表中的向量成为新数据帧的行。以下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  
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过rbind(df, ls)按列创建新的数据框,df如下所示:

  c..r1c1....r1c2....r1c3.. c..r2c1....r2c2....r2c3..
4                      r1c1                      r2c1
5                      r1c2                      r2c2
6                      r1c3                      r2c3
Run Code Online (Sandbox Code Playgroud)

我也尝试过rbind在for循环中执行以下操作:

for (i in 1:length(ls))
  df <- rbind(df, ls[[i]])
Run Code Online (Sandbox Code Playgroud)

但是,这给了我警告信息:invalid factor level, NA generated,即使我最初设置stringsAsFactors为false。当不断在较大的列表上执行时,Rbind似乎也是一个缓慢的过程,因此,我想尽可能地减少其使用。

任何帮助将不胜感激。

MrF*_*ick 7

你可以用

 data.frame(do.call(rbind, ls))
Run Code Online (Sandbox Code Playgroud)

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

  • 这对于任何大型的东西来说都是很慢的。如果执行L &lt;-do.call(Map,c(c,listname))然后使用此方法:http://stackoverflow.com/a/18748069/496803,它将更快。 (2认同)