2

関数を各行に適用するには、さまざまな方法があります。

ここで私が知っているいくつかの方法:

方法 1

for (i in 1:nrow(data) ) { my_function(data[i,]) }

方法 2

apply(data,1,my_function)

方法 3

library(plyr)
adply(data,.margins=1, .fun=my_function)

方法 4

library(doParallel)
nodes <- detectCores()
cl <- makeCluster(nodes)
registerDoParallel(cl)
clusterEvalQ(cl,source("my_fun.R"))
adply(data,.margins=1, .parallel = T, .fun=my_function)
stopCluster(cl)

上位3つの方法のうち、3番目の方法が速いと思います。しかし問題は、方法 4 (並列方法) が方法 3 よりも速いのはいつですか? すべてのコードを実行する前にそれを理解する方法はありますか?

4

0 に答える 0