How to replace a symbol by a backslash in R?

后端 未结 3 957
攒了一身酷
攒了一身酷 2020-12-11 21:24

Could you help me to replace a char by a backslash in R? My trial:

gsub(\"D\",\"\\\\\",\"1D2\")

Thanks in advance

相关标签:
3条回答
  • 2020-12-11 21:46

    When inputting backslashes from the keyboard, always escape them:

    gsub("D","\\\\","1D2")
    #[1] "1\\2"
    

    or,

    gsub("D","\\","1D2", fixed=TRUE)
    #[1] "1\\2"
    

    or,

    library(stringr)
    str_replace("1D2","D","\\\\")
    #[1] "1\\2"
    

    Note: If you want something like "1\2" as output, I'm afraid you can't do that in R (at least in my knowledge). You can use forward slashes in path names to avoid this.

    For more information, refer to this issue raised in R help: How to replace double backslash with single backslash in R.

    0 讨论(0)
  • 2020-12-11 22:04
    gsub("\\p{S}", "\\\\", text, perl=TRUE);
    

    \p{S} ... Match a character from the Unicode category symbol.

    0 讨论(0)
  • 2020-12-11 22:08

    You need to re-escape the backslash because it needs to be escaped once as part of a normal R string (hence '\\' instead of '\'), and in addition it’s handled differently by gsub in a replacement pattern, so it needs to be escaped again. The following works:

    gsub('D', '\\\\', '1D2')
    # "1\\2"
    

    The reason the result looks different from the desired output is that R doesn’t actually print the result, it prints an interpretable R string (note the surrounding quotation marks!). But if you use cat or message it’s printed correctly:

    cat(gsub('D', '\\\\', '1D2'), '\n')
    # 1\2
    
    0 讨论(0)
提交回复
热议问题