2015-04-07 40 views
1

例如,寫它是很好的做法,lapply重新定義()作爲mclapply()

lapply <- function(X, FUN, ...) mclapply(X, FUN, ..., mc.cores = 24L) 

,而不是整個代碼編寫mclapply。這樣,如果有人想在Windows筆記本電腦上運行代碼,他可以簡單地評論該函數的定義。

這種方法有什麼問題嗎?

+3

豈不是更好地設置'mc.cores'選項在代碼的某個地方,所以如果用戶在windows上,'mclapply'的行爲就像'lapply'? – Alex

回答

3

代碼的主要問題在於它不能運行在Windows或非Windows上,因此無論操作系統如何,都會強制用戶進行編輯。作爲@Alex在他的評論中提到的,你可以檢測到操作系統,並設置mc.cores 1中的R的情況下,在Windows下運行:

if (Sys.info()[['sysname']] == 'Windows') { 
    num.cores <- 1        # use only one core on Windows 
} else { 
    num.cores <- 24L       # use multiple cores if Mac or Linux 
} 

mclapply(X, FUN, ..., mc.cores = num.cores) # make call using correct number of cores 
+0

爲什麼OP中的代碼不會運行? – kevinykuo

+0

在您的原始代碼中,您正在同一行上進行兩個函數調用,這將始終失敗。但即使代碼運行,你也會做同樣的事情兩次。 –

相關問題