我想在更换点"2014.06.09"到"2014-06-09".我正在使用gsub()函数.如果
x <- "2014.06.09"
gsub('2', '-' ,x)
# [1] "-014.06.09"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试
gsub('.', '-', x)
# [1] "----------"
Run Code Online (Sandbox Code Playgroud)
而不是"2014-06-09".
class(x)
# "character"
Run Code Online (Sandbox Code Playgroud)
有些人可以建议我一个正确的方法,以及为什么它不适用于'.'(点)
akr*_*run 74
您可能需要转义.哪个特殊字符意味着"任何字符"(来自@Mr Flick的评论)
gsub('\\.', '-', x)
#[1] "2014-06-09"
Run Code Online (Sandbox Code Playgroud)
要么
gsub('[.]', '-', x)
#[1] "2014-06-09"
Run Code Online (Sandbox Code Playgroud)
或者正如评论中提到的@Moix,我们也可以使用fixed=TRUE而不是转义字符.
gsub(".", "-", x, fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)
对于更复杂的任务,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"
Run Code Online (Sandbox Code Playgroud)
或者
str_replace_all(x,"[.]","-")
## [1] "2014-06-09"
Run Code Online (Sandbox Code Playgroud)
使用 R 4.0.0 中引入的原始字符串,可以做到
gsub(r"(\.)", "-", x)
# [1] "2014-06-09"
Run Code Online (Sandbox Code Playgroud)