mclapply()
データフレームに対して、他の同様の関数を使用して高速化したい操作がいくつかありlapply()
ます。これに取り組む最も簡単な方法の1つは、データフレームの各行をリスト内の小さなデータフレームにすることです。私はこれをplyr
次のように非常に簡単に行うことができます:
df <- data.frame( a=rnorm(1e4), b=rnorm(1e4))
require(plyr)
system.time(myList <- alply( df, 1, function(x) data.frame(x) ))
データをリストとして取得すると、次のようなことが簡単にできます。
mclapply( myList, function(x) doSomething(x$a) )
これは順調に機能しますが、私はかなり多くのデータを持っており、adply()
ステップは非常に遅いです。ステップでマルチコア並列バックエンドを使用してみましたadply
が、8を登録したにもかかわらず、複数のプロセッサを使用することはありませんでした。並列オプションがこのタイプの問題で機能しない可能性があるのではないかと思います。
これを高速化するためのヒントはありますか?たぶんベースRソリューション?