R 中的 gsub() 没有替换 '.' (点)
gsub() in R is not replacing '.' (dot)
我想将 "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"
有人可以建议我一个正确的方法以及为什么它不适用于 '.'
(点)
您可能需要转义 .
,这是一个特殊字符,表示 "any character"(来自@Mr Flick 的评论)
gsub('\.', '-', x)
#[1] "2014-06-09"
或
gsub('[.]', '-', x)
#[1] "2014-06-09"
或者正如@Moix 在评论中提到的,我们也可以使用 fixed=TRUE
而不是转义字符。
gsub(".", "-", x, fixed = TRUE)
对于更复杂的任务,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"
使用 R 4.0.0 中引入的原始字符串,可以做到
gsub(r"(\.)", "-", x)
# [1] "2014-06-09"
我想将 "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"
有人可以建议我一个正确的方法以及为什么它不适用于 '.'
(点)
您可能需要转义 .
,这是一个特殊字符,表示 "any character"(来自@Mr Flick 的评论)
gsub('\.', '-', x)
#[1] "2014-06-09"
或
gsub('[.]', '-', x)
#[1] "2014-06-09"
或者正如@Moix 在评论中提到的,我们也可以使用 fixed=TRUE
而不是转义字符。
gsub(".", "-", x, fixed = TRUE)
对于更复杂的任务,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"
使用 R 4.0.0 中引入的原始字符串,可以做到
gsub(r"(\.)", "-", x)
# [1] "2014-06-09"