自信的包和丢失的数据

时间:2013-10-03 08:55:46

标签: r

如果遗漏了明显的事情,我道歉,但我找不到一种方法来要求断言忽略丢失的数据。

根据虚构的电话号码给出以下示例:

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 

1 个答案:

答案 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"
)