警告信息是我想知道的好消息。但我只是想知道它一次!
因此,此函数会抛出2个不同的警告并重复20次。
如何告诉R只打印唯一的警告。我正在寻找一种肾上腺溶液。
Warning messages:
1: NAs introduced by coercion
2: In sqrt(-1) : NaNs produced
以下是我的例子:
foobar <- function(n=20) {
for (i in 1:n) {
as.numeric("b")
sqrt(-1)
}
}
foobar()
答案 0 :(得分:1)
要仅返回唯一的警告字符串,请使用
unique(warnings())
现在,您可能遇到的一个问题是您的函数有超过50个警告,在这种情况下warnings()
将无法捕获所有警告。要解决此问题,您可以将选项中的nwarnings
增加到例如如help page of warnings中建议的那样10000。
options(nwarnings = 10000)
示例:
foobar <- function(n=20) {
warning("First warning")
for (i in 1:n) {
as.numeric("b")
sqrt(-1)
}
warning("Last warning")
}
foobar(60)
unique(warnings())
## Warning messages:
## 1: In foobar(60) : First warning
## 2: NAs introduced by coercion
## 3: In sqrt(-1) : NaNs produced
op <- options(nwarnings = 10000)
foobar(60)
unique(warnings())
## Warning messages:
## 1: In foobar(60) : First warning
## 2: NAs introduced by coercion
## 3: In sqrt(-1) : NaNs produced
## 4: In foobar(60) : Last warning
options(op)