1

如果这遗漏了明显的内容,我深表歉意,但我无法找到一种方法来要求自信忽略丢失的数据。

给定以下基于虚构电话号码的示例:

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 
4

1 回答 1

2

很好发现,该assertive包没有在其与正则表达式相关的函数中正确处理缺失值。

这应该返回NA

is_uk_telephone_number(NA)
##  <NA>
## FALSE

我会尽快解决这个问题


如果您需要即时修复,请使用

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"
)
于 2013-10-03T09:24:30.170 回答