组合列表中的向量以创建数据框 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 <- do.call(Map,c(c,listname))
然后这个方法:***.com/a/18748069/496803 它会快得多。以上是关于组合列表中的向量以创建数据框 R [重复]的主要内容,如果未能解决你的问题,请参考以下文章