hack のためのネタ帳, etc,,,

マルチバイトの文字列処理が出来ない

以下のような状態
> grep("o", c("hage", "hige", "huge", "hege", "hoge", "foo", "bar"))
[1] 5 6
> grep("あ", c("あいうえお", "かきくけこ", "さしすせそ"))
[1] 1
> grep("か", c("あいうえお", "かきくけこ", "さしすせそ"))
[1] 2
> grep("い", c("あいうえお", "かきくけこ", "さしすせそ"))
integer(0)
> grep(".い", c("あいうえお", "かきくけこ", "さしすせそ"))
[1] 1 2 3
ご覧の通り、マルチバイト食わせるとまともに動いてない

それにしても、文字列処理、貧弱過ぎる 今時、gawk の match() 相当とは言わないまでも、せめて awk の match() 相当の関数くらいはあって欲しいものだが、これ地味に辛い。
bash の方が 100 万倍くらいマシなんじゃないかと思える。

2019-02-05: 追記
これ Win64 版 GNU R + RStudio や Ubuntu 16.04.5 LTS の r-base-core では問題なく動いてる模様。
どうも Cygwin の R 特有の問題っぽい。
あと、awk の match 相当は regexpr() で、gawk の match() 相当は regexec() で出来てる模様。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

編集にはIDが必要です