-2

gsub や stringr を理解していないようです。例:

 > a<- "a book"

> gsub(" ", ".", a)

[1] "a.book"

わかった。しかし:

> a<-"a.book"

> gsub(".", " ", a)

[1] "      "

私は期待したい

"一冊の本"

ピリオドをスペースに置き換えています。

また: srintr:str_replace(a, ".", " ")戻り値:

" .book"

そしてstr_replace_all(a, ".", " ")戻る

" "

私は使用することができますstringi::stri_replace(a, " ", fixed=".")

"a book"

なぜ gsub (および str_replace) が期待どおりに動作しないのか疑問に思っています。スペースを別の文字に置き換える場合は機能しますが、その逆は機能しません。

4

1 に答える 1

4

これは、への最初の引数gsub、すなわち、pattern実際には正規表現だからです。正規表現では、ピリオド.はメタ文字であり、任意の 1 文字に一致します。 を参照してください?base::regex。あなたの場合、次の方法でピリオドをエスケープする必要があります。

gsub("\\.", " ", a)
于 2016-05-26T14:36:29.357 に答える