如何粘贴作为一个消息与R stopifnot?

2nc8po8w  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(80)

我想使用stopifnot报告一条依赖于变量的消息。使用paste而不是逐字字符串的正常语法会给出错误。是否可以做到这一点?

# As expected
stopifnot("a msg" = NULL)

# Fails
stopifnot(paste("a", "a msg") = NULL)

# Fails
msg = paste("a", "a msg")
stopifnot(msg = NULL)

字符串

7eumitmz

7eumitmz1#

两个选择:
1.使用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的命名便利性。)

相关问题