我有多个相同的数据帧:X1,X2,...,X32
一个数据帧的示例:
> X1
value
1 3300320
我想像这样拥有一个数据帧:
> XTotal
value X
1 3300320 1
2 345098 2
...
32 34355 32
我尝试使用for循环并粘贴(“X”,i,sep =“”),rbind等,但每次我都得到一个类似的字符串列表:
> listDF
1 "X1"
2 "X2"
...
32 "X32"
因此,我无法正确调用每个数据帧将其值放在XTotal数据帧中......
我有点失落,不知道吗?
提前致谢!
答案 0 :(得分:1)
永远不要在循环中生长对象。这是非常低效的,因为它每次都会复制整个对象。
创建data.frames列表使用get
和lapply
或mget
dflist <- mget(paste('X', 1:32), envir = parent.frame())
# also valid
# dflist <- lapply(paste('X', 1:32), get)
# to combine them
DFlist <- do.call('rbind', dflist)
# or, faster
library(data.table)
DFlist <- rbindlist(dflist)
如果data.frames没有相同的列/列顺序,请使用rbind.fill
中的plyr
library(plyr)
DFlist <- rbind.fill(dflist)
确实没有必要创建dflist
明确
以下任何一项也可以使用
rbind.fill(mget(paste('X', 1:32), envir = parent.frame()))
rbindlist(mget(paste('X', 1:32), envir = parent.frame()))
do.call(rbind, mget(paste('X', 1:32), envir = parent.frame()))