私は R プログラミングが初めてで、パッケージで作成された12 個のトレリス オブジェクトplot
で並列に実行する方法を知りたいと思っていました。lattice
基本的に、多くの前処理手順の後、次のコマンドがあります。
plot(adhd_plot, split = c(1,1,4,3)) #plot adhd trellis object at 1,1 in a grid of 4 by 3 i.e 4 COLUMNS x 3 ROWS
plot(bpd_plot, split = c(2,1,4,3), newpage = F) #plot bpd trellis object in 2nd Column in a grid of 4colx3row
plot(bmi_plot, split = c(3,1,4,3), newpage = F)
plot(dbp_plot, split = c(4,1,4,3), newpage = F)
plot(height_plot, split = c(1,2,4,3), newpage = F)
plot(hdl_plot, split = c(2,2,4,3), newpage = F)
plot(ldl_plot, split = c(3,2,4,3), newpage = F)
plot(ra_plot, split = c(4,2,4,3), newpage = F)
plot(sbp_plot, split = c(1,3,4,3), newpage = F)
plot(scz_plot, split = c(2,3,4,3), newpage = F)
plot(tc_plot, split = c(3,3,4,3), newpage = F)
plot(tg_plot, split = c(4,3,4,3), newpage = F)
問題は、上記のコマンドは機能しますが、Mac OSX では次のような図を生成するのに非常に長い(>4 時間)かかることです。
私の Mac には 8 つのコアがあるので、プロット コマンドをコアごとに分割して、プロットを高速化する必要があると考えました。
他の並列化に関する質問を検索した後、パッケージを見つけ、次のように関数をdoParallel
実装できる可能性があると考え ました。parLapply
library(doParallel)
detectCores()
cl <- makeCluster(6) #6 out of 8 cores
registerdoParallel(cl)
parLapply(cl, list_of_all_trellis_objects, plot)
ただし、split
上記のコマンドでパラメーターを使用しparLapply
て、プロットをグリッド上の別の場所に配置する方法がわかりません。
私は必然的に12個のプロットを別々に配置し、重ね合わせる必要はありません。
私の質問に答えていただきありがとうございます。あなたのヒントと解決策を楽しみにしています。