のリストがありdata.frames
ます。各 data.frame 内で、グループ化 ( z
) 関数を実行して分割し、結果をまとめてから、ネストされたのすべての結果をlapply
data.frame にまとめて、結果data.frame
のリストを 1 つにフラット化します。 data.frame
.
library(plyr)
df <- data.frame(x = sample(1:200, 30000, replace = TRUE),
y = sample(1:200, 30000, replace = TRUE),
z = sample(LETTERS, 30000, replace = TRUE))
alist <- list(df,df,df) # longer in real life
answer <- lapply(alist, function(q) {
a <- split(q,q$z)
result.1 <- lapply(a, function(w) {
neww <- cbind(w[,1],w[,2])
result.2 <- colSums(neww)
})
ldply(result.1)
})
# cor(neww) can actually be a variey of foos I just use cor() for easy reproducibility
ldply(answer)
これには、非常に厳しいメモリ使用量があり、低速でもあります。@Andrie のおかげで、次のように開始する前にワークスペースをクリアする方法を知っています。
rm(list=setdiff(ls(), "alist"))
しかし、メモリ使用量を減らしてスピードアップを試みるためw
に、2番目のジャンクなどの私のアプローチを変更する方法はありますか? lapply
この場合foo
、マトリックスが好きなのでdata.table
、私の答えにはなりません。他foo
の s では、すべてw
が必要になり、クラスは a である必要がありますdata.frame