R 将死w/NA元素
我想使用R中的包来确定字符向量中的所有元素(a)是NA还是(b)符合regex模式。(在此特定情况下,元素只能包含数字。) 下面的调用返回“对“x”的断言失败:必须符合模式“^\d{2,3}$”,即使R 将死w/NA元素,r,assert,R,Assert,我想使用R中的包来确定字符向量中的所有元素(a)是NA还是(b)符合regex模式。(在此特定情况下,元素只能包含数字。) 下面的调用返回“对“x”的断言失败:必须符合模式“^\d{2,3}$”,即使any.missing参数设置为TRUE也是如此。有没有一种自然简洁的方法来测试这个将死?如果使用正则表达式模式,any.missing参数基本上被忽略了吗 x <- c("11", "22", "333", NA_character_) pattern <- "^\\d{2,3}$"
any.missing
参数设置为TRUE也是如此。有没有一种自然简洁的方法来测试这个将死?如果使用正则表达式模式,any.missing
参数基本上被忽略了吗
x <- c("11", "22", "333", NA_character_)
pattern <- "^\\d{2,3}$"
checkmate::assert_character(x, pattern=pattern, any.missing=TRUE)
接下来,当提供正则表达式模式时,
any.missing
参数不再被忽略。这是可复制的,并且与文档相反。我建议你把它提高到最低限度。在此期间,我建议您恢复到testit
变量,甚至是stopifnot(grepl(pattern,x)| is.na(x))
。另一个解决方法是checkmate::assert_字符(x[!is.na(x)],pattern=pattern,any.missing=TRUE)
(从技术上讲,any.missing
参数是多余的,但可以保留,以便以后删除[!is.na(x)]
)问题似乎出在。checkCharacterPattern
子例程没有考虑any.missing
或all.missing
参数。missing值总是从grepl
返回FALSE
。谢谢大家。作为
testit::assert(
"Any existing elements must be missing or only digits",
all(is.na(x) | grepl(pattern, x)
)