我有一个数据框:
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)))
我可以将其转换为以下格式的单个数据框:
data.frame(x = c('a', 'b', 'c', 'd', 'e', 'f'), y= c(1,2,3,4,5,6))
答案 0 :(得分:65)
do.call("rbind", foo)
应该可以解决问题。
答案 1 :(得分: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
答案 2 :(得分:3)
您的代码存在一些问题。
首先,列表中的赋值语句不起作用。这需要通过例如:
来解决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))
)
然后,您可以使用rbind()来组合数据框:
rbind(foo$df1, foo$df2)
x y
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
但这会带来更多问题。例如,为什么首先将列表中的数据框组合在一起。第二个是你是否真的需要使用数据帧而不是向量。最后,我通常会尝试避免使用rbind(),而是在以这种方式组合数据帧时使用merge()。
答案 3 :(得分:1)
merge(foo[[1]], foo[[2]], all = TRUE)