在
Python中,您可以使用原始字符串:
import re
re.sub(r"\\", ":", "back\\slash") # r"\\" instead of "\\\\"
R中是否也存在这种情况?例如,这里是R中没有原始字符串的等效代码片段:
library(stringr)
str_replace("back\\slash", "\\\\", ":")
我希望能够做到这一点:
str_replace("back\\slash", raw("\\"), ":")
这个功能是否已经存在,或者我应该只实现自己的函数raw()?
最佳答案 不完全按照您想要的方式(即不是原始字符串的语言范围规范),并且没有明确记录,但您可以实现我所解释的更广泛的目标(进行字符串替换而不与笨拙的目标模式规范作斗争) stringr通过设置搜索模式的类来起作用.
s <- "\\"
class(s) <- "fixed"
str_replace("back\\slash", s, ":")
不幸的是,setClass()意味着“动态设置对象的类属性”以外的其他东西,所以你可能想要定义
str_replace_fixed <- function(string, pattern, replacement) {
class(pattern) <- "fixed"
return(str_replace(string,pattern,replacement))
}
stringr中已经有一个str_split_fixed();您可以请求将str_replace_fixed添加到包中…(如果我发布了issue on the stringr Github repo,我可能会首先要求明确记录此功能,其次要实现str_split_fixed …)
正如评论中指出的那样,大多数base-R字符串操作函数(sub,gsub,grep,grepl)已经有了固定的参数……