如果遗漏了明显的事情,我道歉,但我找不到一种方法来要求断言忽略丢失的数据。
根据虚构的电话号码给出以下示例:
testfile.data <- structure(list(goodtelephones = c("01234 567 890", "07987 654 321",
"08456 234 567"), goodemails = c("bob@email.com", "brian.peter@silly.co.uk",
"cally_whoosh@email.co.uk"), badtelephones = c("01234 567 890",
"", "08456 234 567"), bademails = c("bob@email.com", "brian.peter@silly.co.uk",
"")), .Names = c("goodtelephones", "goodemails", "badtelephones",
"bademails"), class = "data.frame", row.names = c(NA, -3L))
library(assertive)
总是说缺少数据的列不是所有的邮政编码 - 我知道,因为有些邮件丢失了。我是否错过了一个论点或其他方法来解决这个问题,以至于它忽略了那些缺失的东西?
> is_uk_telephone_number(testfile.data$badtelephones)
01234567890 08456234567
TRUE FALSE TRUE
答案 0 :(得分:2)
很明显,assertive
包没有正确处理其正则表达式相关函数中的缺失值。
这应该返回NA
。
is_uk_telephone_number(NA)
## <NA>
## FALSE
我会得到一个修复此a.s.a.p。
如果您需要即时修复,请使用
覆盖现有功能assignInNamespace(
"matches_regex",
function (x, rx, ignore.case = TRUE, ...)
{
call_and_name(
function(x)
{
ifelse(
is.na(x),
NA,
grepl(rx, x, ignore.case = ignore.case, ...)
)
},
x
)
},
"assertive"
)