0

複数の同一のデータフレームがあります: X1、X2、...、X32

1 つのデータフレームの例:

> X1
    value
1 3300320

そのようなデータフレームを1つだけ持ちたいと思います:

> 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 のリストを作成するには、getandlapplyまたはを使用します。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 に同じ列/列の順序がない場合は、from を使用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()))
于 2013-03-28T02:17:58.807 に答える