0

ネストされたリストを含むリストオブジェクトがあり、それぞれにデータフレームが含まれています。以下のコードは、私のデータ構造をシミュレートしています。

## simulate my data structure -- list of data frames
mylist <- list()
for (i in 1:5) {
 tmp <- list(data = data.frame(x=sample(1:5, replace=T), y=sample(6:10, replace=T)))
 mylist <- c(mylist, tmp)
}

1つのマスターデータフレームを作成するために、すべてのデータフレームを行バインドしようとしています。現在、forループを使用してこのアクションを完了しています。

## goal: better way to combine row bind data frames
## I like rbind.fill because sometimes my data are not as clean as desired
library(plyr)
df <- data.frame(stringsAsFactors=F)
for (i in 1:length(mylist)) {
 tmp <- mylist[i]$data
 df <- rbind.fill(df, tmp)
}

実際には、私のマスターリストは非常に大きく(5ではなく3700の長さ)、forループが非常に遅くなります。

同じタスクを完了するためのより速い方法はありますか?

4

1 に答える 1

2
ldply(mylist, data.frame)

# if you dont need the id column, 

ldply(mylist, data.frame)[,-1]

# If you want a progress bar for the larger operation, add .progress
ldply(mylist, data.frame, .progress = 'text')

# See ?create_progress_bar for more options.
于 2012-09-20T17:50:01.800 に答える