首页 文章

将List中的向量组合在一起以创建Dataframe R [duplicate]

提问于
浏览
0

这个问题在这里已有答案:

我有一个大小均匀的字符向量列表,我希望将它们有效地组合成一个数据帧,列表中的向量将成为新数据帧的行 . 在下面, 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 回答

  • 4

    你可以用

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

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

相关问题