2015-04-07 68 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

在您的原始代码中,您正在同一行上进行两个函数调用,这将始终失败。但即使代码运行,你也会做同样的事情两次。 –

相关问题