我可以将类似数据帧的列表合并到一个数据帧中吗?

Dav*_*uer 30 r list dataframe

我有一个数据帧:

foo <- list(df1 = data.frame(x=c('a', 'b', 'c'),y = c(1,2,3)), 
            df2 = data.frame(x=c('d', 'e', 'f'),y = c(4,5,6)))
Run Code Online (Sandbox Code Playgroud)

我可以将其转换为表单的单个数据框:

data.frame(x = c('a', 'b', 'c', 'd', 'e', 'f'), y= c(1,2,3,4,5,6))
Run Code Online (Sandbox Code Playgroud)

Hon*_*Ooi 67

do.call("rbind", foo) 应该做的伎俩.

  • 一个更有效的解决方案是来自data.table的`rbindlist`.查看[this post](/sf/ask/1097148531/)了解详细信息和基准测试. (6认同)
  • 现在不建议使用rbind_list,而应该使用dplyr :: bind_rows。 (3认同)

Sac*_*amp 8

plyr:

foo <- list(df1 = data.frame(x=c('a', 'b', 'c'),y = c(1,2,3)), 
        df2 = data.frame(x=c('d', 'e', 'f'),y = c(4,5,6)))

library(plyr)
ldply(foo)[,-1]
  x y
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
Run Code Online (Sandbox Code Playgroud)

  • 在`plyr`中也是`rbind.fill`,它的作用类似于`do.call("rbind",list)`,但允许不匹配的列名. (6认同)