例如,寫它是很好的做法,lapply重新定義()作爲mclapply()
lapply <- function(X, FUN, ...) mclapply(X, FUN, ..., mc.cores = 24L)
,而不是整個代碼編寫mclapply
。這樣,如果有人想在Windows筆記本電腦上運行代碼,他可以簡單地評論該函數的定義。
這種方法有什麼問題嗎?
例如,寫它是很好的做法,lapply重新定義()作爲mclapply()
lapply <- function(X, FUN, ...) mclapply(X, FUN, ..., mc.cores = 24L)
,而不是整個代碼編寫mclapply
。這樣,如果有人想在Windows筆記本電腦上運行代碼,他可以簡單地評論該函數的定義。
這種方法有什麼問題嗎?
代碼的主要問題在於它不能運行在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
爲什麼OP中的代碼不會運行? – kevinykuo
在您的原始代碼中,您正在同一行上進行兩個函數調用,這將始終失敗。但即使代碼運行,你也會做同樣的事情兩次。 –
豈不是更好地設置'mc.cores'選項在代碼的某個地方,所以如果用戶在windows上,'mclapply'的行爲就像'lapply'? – Alex