例如,写它是很好的做法,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