0

我有多个相同的数据框:X1、X2、...、X32

一个数据框的示例:

> X1
    value
1 3300320

我想要一个这样的数据框:

> XTotal
    value   X
1 3300320   1
2  345098   2
...
32  34355   32

我尝试使用 for 循环和 paste("X", i, sep=""), rbind 等,但每次我得到一个这样的字符串列表:

> listDF
1  "X1"
2  "X2"
...
32 "X32"

所以,我不能正确调用每个数据框来将它们的值放入 XTotal 数据框......

我有点迷茫,知道吗?

提前致谢!

4

1 回答 1

1

永远不要在循环中增长对象。这是非常低效的,因为它每次都会复制整个对象。

创建 data.frames 的列表使用getlapplymget

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.fillfromplyr

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()))
于 2013-03-28T02:17:58.807 回答