R 中的 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"

能否有人建议我一种方法来得到这个权利,以及为什么它不适合'.'(点)

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

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

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

或者正如@Moix在评论中提到的,我们也可以使用fixed=TRUE来代替转义字符。

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

对于更复杂的任务,字符串包可能很有趣

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"

使用r4.0.0引入的原始字符串,可以做

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

相关内容

  • 没有找到相关文章

最新更新