R中的gsub()没有替换'。' (点)

时间:2015-07-20 13:45:29

标签: r regex gsub

我想将"2014.06.09"中的点替换为"2014-06-09"。我正在使用 gsub()函数。如果

x <-  "2014.06.09"
gsub('2', '-' ,x)
# [1] "-014.06.09"

但是当我尝试

gsub('.', '-', x)
# [1] "----------"

而不是"2014-06-09"

class(x)
# "character"

有些人可以建议我一个正确的方法,以及为什么它不适用于'.'(点)

2 个答案:

答案 0 :(得分:61)

您可能需要转义.这是一个特殊字符,意思是“任何字符”(来自@Mr Flick的评论)

 gsub('\\.', '-', x)
 #[1] "2014-06-09"

或者

gsub('[.]', '-', x)
#[1] "2014-06-09"

或者@Moix在评论中提到,我们也可以使用fixed=TRUE而不是转义字符。

 gsub(".", "-", x, fixed = TRUE)

答案 1 :(得分:1)

对于更复杂的任务,stringr 包可能会很有趣

https://cran.r-project.org/web/packages/stringr/vignettes/stringr.html

https://github.com/rstudio/cheatsheets/raw/master/strings.pdf

library(stringr)

str_replace_all(x,"\\.","-")
## [1] "2014-06-09"

str_replace_all(x,"[.]","-")
## [1] "2014-06-09"