Rの「clhs」パッケージを使用して、母集団(a、b、c、d、...以下を参照)から代表的なサンプルを抽出するつもりです。私の(マルチコア)コンピューターでは、サンプリングプロセスに非常に時間がかかるため、サンプリング手順を並行して実行したい (複数の CPU コアを同時に使用)。
これらは、サンプルを描画したい(例の)データフレーム(「母集団」)の一部です。
a <- as.data.frame(replicate(1000, rnorm(20)))
b <- as.data.frame(replicate(1000, rnorm(20)))
c <- as.data.frame(replicate(1000, rnorm(20)))
d <- as.data.frame(replicate(1000, rnorm(20)))
実行したい clhs コードは次のとおりです。
clh_a <- clhs(x=a, size=round(nrow(a)/5), iter=2000, simple=F)) # 20% of all samples should be selected
clh_b <- clhs(x=b, size=round(nrow(b)/5), iter=2000, simple=F))
等...
このサンプリング プロセスを並行して実行する方法は何ですか? または、効率的な方法でこれを行う別の方法はありますか?
補遺 (「zipfzapf」に感謝します):
私は「parLapply」を使用しようとしていました - 残念ながら、最後にRは「長さのエラー(x): 'x'がありません」というエラーメッセージをスローしていますが、これは正直わかりません...任意のアイデア?
私のコード:
library("snow")
a <- as.data.frame(replicate(1000, rnorm(20)))
b <- as.data.frame(replicate(1000, rnorm(20)))
c <- as.data.frame(replicate(1000, rnorm(20)))
d <- as.data.frame(replicate(1000, rnorm(20)))
abcd <- list(a, b, c, d)
cl <- makeCluster(4)
results <- parLapply(cl,
X = abcd,
FUN = function(i) {
clhs(x = i, size = round(nrow(i) / 5), iter = 2000, simple = FALSE)
},
)