忽略R字符串中的转义字符(反斜杠)

mhe*_*ans 19 string r escaping spss

在SPSS中运行R插件时,我收到一个Windows路径字符串作为输入,例如

'C:\Users\mhermans\somefile.csv'
Run Code Online (Sandbox Code Playgroud)

我想在后续的R代码中使用该路径,但是斜杠需要用正斜杠替换,否则R将其解释为转义(例如"\ U used without hex digits"错误).

然而,我无法找到一个可以用斜线替换反斜杠或双重逃避它们的函数.所有这些函数都假设这些字符被转义.

那么,是否有类似的东西:

>gsub('\\', '/', 'C:\Users\mhermans')
C:/Users/mhermans
Run Code Online (Sandbox Code Playgroud)

Sac*_*amp 14

您可以尝试在scan()中使用'allowEscapes'参数

X=scan(what="character",allowEscapes=F)
C:\Users\mhermans\somefile.csv

print(X)
[1] "C:\\Users\\mhermans\\somefile.csv"
Run Code Online (Sandbox Code Playgroud)

  • Scan()似乎是一个交互式命令.是否可以在脚本中使用,由对话框触发(因此在后台运行)? (3认同)
  • allowEscapes = FALSE是默认值,因此可以将其缩写为"x < - scan(what ="")` (2认同)

drf*_*drf 12

从 2020 年 4 月推出的4.0 版本开始,R 提供了用于指定原始字符串的语法。示例中的字符串可以写为:

path <- r"(C:\Users\mhermans\somefile.csv)"
Run Code Online (Sandbox Code Playgroud)

?Quotes

原始字符常量也可以使用与 C++ 中使用的语法类似的语法:r"(...)" with ...任何字符序列,但它不能包含结束序列 )"。分隔符对 []也可以使用 和 {},并且可以使用 R 代替 r。为了获得额外的灵活性,可以在左引号和左分隔符之间放置多个破折号,只要在结束引号之间出现相同数量的破折号即可分隔符和结束报价。


42-*_*42- 5

首先,您需要将其分配给名称:

pathname <- 'C:\\Users\\mhermans\\somefile.csv'
Run Code Online (Sandbox Code Playgroud)

请注意,为了将其添加到名称向量中,您需要将它们全部加倍,这提示了如何使用正则表达式:

 gsub("\\\\", "/", pathname)
# [1] "C:/Users/mhermans/somefile.csv"
Run Code Online (Sandbox Code Playgroud)

你需要加倍反斜杠.每一对中的第一个是向grep机器发出信号,表明接下来的是文字.

  • 但是R用与“ C:/Users/mhermans/somefile.csv”相同的方式解释“ C:\\ Users \\ mhermans \\ somefile.csv”对吗?问题在于读取带有单个反斜杠的字符串并将其转换为这两种解决方案之一。 (2认同)