R文档中stopifnot的描述
有时...中的表达式的计算结果不为TRUE。考虑以下情况的错误消息
a <- 1:10
stopifnot(
class(a) %in% c("numeric", "integer"),
sum(a) >= 100
)
> Error: sum(a) >= 100 is not TRUE
很好但是,以下情况的错误消息不是我所期望的
a <- letters
stopifnot(
class(a) %in% c("numeric", "integer"),
sum(a) >= 100
)
> Error in sum(a) : invalid 'type' (character) of argument
我希望它能说
但是,它没有。
我的期望正确吗?那是stopifnot()应该如何工作的? ,如何使stopifnot()像这样工作?
最佳答案
stopifnot
评估您提供的每个表达式,然后检查它们是否均为TRUE
。如果不是这种情况,它将暂停并打印一条错误消息,指出哪些表达式失败。
在您的示例中,正在发生的事情是表达式本身正在触发错误。导致错误消息的是表达式sum(a) >= 100
的求值,而不是stopifnot
本身。