Paralel paketleri kullanmakta yeniyim ve bazı çalışmalarımı hızlandırmak için bir teklifte keşfetmeye başladım. Sıklıkla karşılaştığım bir sıkıntı, clusterExport
ilgili işlevler/değişkenler olmadığında foreach
komutunun kusacağını gösteriyor.Önceden hangi nesnelere clusterExport kullanabileceğinizi bilmek
Örnek
Ben örnek aşağıda mutlaka hızlı hale getirmek için foreach
ihtiyacı olmadığını biliyorum ama illüstrasyon uğruna, bunu kullanacağız. Gördüğünüz gibi
library(doParallel)
library(parallel)
library(lubridate)
library(foreach)
cl <- makeCluster(c("localhost", "localhost", "localhost","localhost"), type = "SOCK")
registerDoParallel(cl, cores = 4)
Dates <- sample(c(dates = format(seq(ISOdate(2010,1,1), by='day', length=365), format='%d-%m-%Y')), 500, replace = TRUE)
foreach(i = seq_along(Dates), .combine = rbind) %dopar% dmy(Dates[i])
Error in dmy(Dates[i]) : task 1 failed - "could not find function "dmy""
, dmy
fonksiyonu bulunmazsa bildiren bir hata var. Sonra aşağıdaki gidip eklemek zorunda:
clusterExport(cl, c("dmy"))
Benim soru, ihracat ne ipuçları hata bakarak yanı sıra ihracat nesneleri veya önceden bilmenin daha şık bir yolu yoktur edilir foreach
'u çalıştırmadan önce küresel ortamı tüm kölelerle paylaşmanın bir yolu var mı? Tek bir paket işlevini bu şekilde el ile dışa aktarmaya gerek yoktur.
Bunun için bir '.packages' argümanı var. –
Detaylandırmaya bakar mısınız? Denedim (.packages()) ve ekli paketler listelendi. Ama bir paketin tüm nesnelerini nasıl ihraç edebilirim? Ben clusterExport (cl, c ("kitaplık (lubridate)")) ve clusterExport (cl, c ("lubridate")) hiçbir boşuna – JackeJR
denedim Üzgünüm, ".packages" foreach "," değil .packages işlevi. –