foreachとldplyを使ってforループの記述から脱却しよう
例えば、ある関数をforループで毎回呼び出して処理させている時は、foreachとldplyに置き換えられる。
一般に、後者の方が処理速度が早いらしい。
ま、そんな言語設計してる時点でどうかしてると思うがな!
GetSum <- function(a){ x <- a + 1 + 2 return_df <- data.frame(a, x) return(return_df) } range_vec <- 1:10 # forループを使う場合 df_by_for <- data.frame() for (a in range_vec){ return_df <- GetSum(a) df_by_for <- rbind(df_by_for, return_df) } # ldplyを使う場合 df_by_ldply <- ldply(foreach (a=range_vec, combine=rbind) %do% { # doparにすると、並列で処理してくれる。並列でなくともいいときは%do% GetSum(a) })
どちらのケースも下のデータフレームが得られる
a x 1 1 4 2 2 5 3 3 6 4 4 7 5 5 8 6 6 9 7 7 10 8 8 11 9 9 12 10 10 13