2016-08-01 8 views
4

私はこれをRパッケージのバグとして提出する前に、私はそれをy'allで実行します。私は、次のすべてが優れていると思う:qdapパッケージ:ゼロ桁を「ゼロ」の単語に変換する際のバグ

replace_number("123 0 boogie") 
[1] "one hundred twenty three boogie" 
replace_number("1;1 foo") 
[1] "one;one foo" 
replace_number("47 bar") 
[1] "forty seven bar" 
replace_number("0") 
"zero" 

私は「ゼロ」が出力から欠落しているため、次のすべてが悪いと思う:

replace_number("1;0 foo") 
[1] "one; foo" 
replace_number("00 bar") 
[1] "bar" 
replace_number("0x") 
[1] "x" 

基本的に、私はreplace_number()であることを言うだろう数字0を含む文字列を処理することはできません( "0"を除く)。それは本当のバグですか?

+1

問題を提出することができます。これは、機能要求でも、少なくともドキュメントの警告メッセージでもかまいません。 –

答えて

5

あなたがreplace_numberの根性に掘る場合:

unlist(lapply(lapply(gsub(",([0-9])", "\\1", text.var), function(x) { 
     if (!is.na(x) & length(unlist(strsplit(x, "([0-9])", 
      perl = TRUE))) > 1) { 
      num_sub(x, num.paste = num.paste) 
     } 
     else { 
      x 
     } 
    }), function(x) mgsub(0:9, ones, x))) 

あなたは問題がその関数内で掘るqdap:::num_sub

qdap:::num_sub("101", num.paste = "combine") ## "onehundredone" 
qdap:::num_sub("0", num.paste = "combine") ## "" 

で発生していることがわかります、問題は内部を有し、numb2wordで発生コード

ones <- c("", "one", "two", "three", "four", "five", "six", 
    "seven", "eight", "nine") 
names(ones) <- 0:9 

は、ゼロ値を空白に変換します。私は自分自身をこの問題に直面していた場合、私はreplace_number.Rに行き、そしてreplace_numbernumb2wordに受け継がれてしまった論理引数blank_zeros=TRUEを取ることができるように後方互換方法でこれを変更しようと、qdap repoをフォークし、正しいことをしただろう、例えば

ones <- c(if (blank_zeros) "" else "zero", 
      "one", "two", "three", "four", "five", "six", 
    "seven", "eight", "nine") 

これまでのところ私はqdap issues listに掲載しました。

+0

コード内で見つかった良い –

+0

そのコードは先行ゼロを抑制することを意図していましたか? – smci

関連する問題