使用mclapply()
,所有发出的警告似乎都被抑制了:
library(multicore)
mclapply(1:3, function(x) warning(x))
[[1]]
[1] "1"
[[2]]
[1] "2"
[[3]]
[1] "3"
而
lapply
会给出:lapply(1:3, function(x) warning(x))
[[1]]
[1] "1"
[[2]]
[1] "2"
[[3]]
[1] "3"
Warning messages:
1: In FUN(1:3[[3L]], ...) : 1
2: In FUN(1:3[[3L]], ...) : 2
3: In FUN(1:3[[3L]], ...) : 3
有关如何避免丢失警告的任何提示?
最佳答案
根据mclapply
的帮助页面,我认为mc.silent
参数应允许您选择是否打印警告。奇怪的是,它没有那样做。将其显式设置为TRUE
或FALSE
对您的情况没有任何影响。
因此,这只给我们留下了一些肮脏的骇客:强迫R在发生警告时打印警告。
options(warn=1)
mclapply(1:3, function(x) warning(x))
# Warning in FUN(1L[[1L]], ...) : 1
# Warning in FUN(2L[[1L]], ...) : 2
# Warning in FUN(3L[[1L]], ...) : 3
# [[1]]
# [1] "1"
#
# [[2]]
# [1] "2"
#
# [[3]]
# [1] "3"