使用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参数应允许您选择是否打印警告。奇怪的是,它没有那样做。将其显式设置为TRUEFALSE对您的情况没有任何影响。

因此,这只给我们留下了一些肮脏的骇客:强迫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"

07-24 09:51
查看更多