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 に答える