-2

我似乎不了解 gsub 或 stringr。例子:

 > a<- "a book"

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

[1] "a.book"

好的。但:

> a<-"a.book"

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

[1] "      "

我会预料到的

“一本书”

我用空格替换句号。

另外:srintrstr_replace(a, ".", " ")返回:

" .book"

str_replace_all(a, ".", " ")返回

" "

我可以使用stringi: stri_replace(a, " ", fixed="."):

"a book"

我只是想知道为什么 gsub(和 str_replace)没有像我预期的那样行事。它们在用另一个字符替换空格时起作用,但反之则不行。

4

1 回答 1

4

那是因为 , 的第一个参数gsub实际上pattern是一个正则表达式。在正则表达式中,句.点是一个元字符,它匹配任何单个字符,请参阅?base::regex. 在您的情况下,您需要通过以下方式转义期间:

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