将lapply()重新定义为mclapply()是一种好习惯吗?

时间:2015-04-07 04:30:55

标签: r

例如,写

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

而不是在整个代码中编写mclapply。这样,如果其他人想要在Windows笔记本电脑上运行代码,他可以简单地评论函数定义。

这种方法有什么问题吗?

1 个答案:

答案 0 :(得分:3)

代码的主要问题在于它无法在Windows或非Windows上运行,因此无论操作系统如何,都会强制用户进行编辑。正如@Alex在评论中提到的那样,您可以检测操作系统,并在mc.cores在Windows下运行的情况下将R设置为1:

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