我想使用stopifnot报告一条依赖于变量的消息。使用paste而不是逐字字符串的正常语法会给出错误。是否可以做到这一点?
stopifnot
paste
# As expected stopifnot("a msg" = NULL) # Fails stopifnot(paste("a", "a msg") = NULL) # Fails msg = paste("a", "a msg") stopifnot(msg = NULL)
字符串
7eumitmz1#
两个选择:1.使用do.call和一个已计算表达式的命名列表:
do.call
do.call(stopifnot, setNames(list(1 == 1, 1 == 2), paste("msg", c("A", "B")))) # Error: msg B
字符串1.不要使用named-expression,直接处理它:
if (!isTRUE(1 == 2)) stop("msg B", call. = FALSE) # Error: msg B
型(尽管我怀疑你是想坚持stopifnot的命名便利性。)
1条答案
按热度按时间7eumitmz1#
两个选择:
1.使用
do.call
和一个已计算表达式的命名列表:字符串
1.不要使用named-expression,直接处理它:
型
(尽管我怀疑你是想坚持
stopifnot
的命名便利性。)