パラレルパッケージを使用して生成されたクラスターにグローバルに定義されたクラスを渡す方法がわかりません。私はそれが機能するために働いてきた:R並列プログラミングでグローバルにS4クラスを定義
funs = "testClass"
fun = function(x) testClass(test = x^2)
testClass = function(test) return(test)
cl <- parallel::makeCluster(2, outfile='')
parallel::clusterExport(cl = cl, varlist = funs, envir = globalenv())
res <- parallel::parLapply(cl = cl, X = seq_len(10L), fun = fun)
parallel::stopCluster(cl)
res
は同じアプローチは、クラスのために動作しません:
funs = "testClass"
fun = function(x) testClass(test = x^2)
testClass = setClass("testClass", slots = c(test = "numeric"))
cl <- parallel::makeCluster(2, outfile='')
parallel::clusterExport(cl = cl, varlist = funs, envir = globalenv())
res <- parallel::parLapply(cl = cl, X = seq_len(10L), fun = fun)
parallel::stopCluster(cl)
私はパッケージ内のクラスと発電機能を置くことが可能である知っているが、そこにありますこの問題を解決する簡単な方法はありますか?
あなたのコードは動作しません。 'funs'と' fun'とは何ですか? –
funsとfunは両方のコードチャンクで同じです。わかりやすくするために更新されました。 –