在SPSS中运行R-plugin时,我收到一个Windows路径字符串作为输入,例如
'C:\Users\mhermans\somefile.csv'
我想在后续的R代码中使用该路径,但是斜杠需要用正斜杠替换,否则R将其解释为转义(例如“\ UU,不使用十六进制数字”错误)。
然而,我无法找到一个可以用斜线替换反斜杠或双重逃避它们的函数。所有这些函数都假设这些字符被转义。
那么,是否有类似的内容:
>gsub('\\', '/', 'C:\Users\mhermans')
C:/Users/mhermans
答案 0 :(得分:14)
您可以尝试在scan()
中使用'allowEscapes'参数X=scan(what="character",allowEscapes=F)
C:\Users\mhermans\somefile.csv
print(X)
[1] "C:\\Users\\mhermans\\somefile.csv"
答案 1 :(得分:4)
首先,您需要将其分配给名称:
pathname <- 'C:\\Users\\mhermans\\somefile.csv'
请注意,为了将其添加到名称向量中,您需要将它们全部加倍,这会提示您如何使用正则表达式。实际上,如果你从文本文件中读取它,那么R将为你做所有加倍。请注意,它不是真正加倍反斜杠。它被存储为单个反斜杠,但它正在显示,并且需要从控制台输入。否则R解释器尝试(并且经常失败)将其转换为特殊字符。为了解决这个问题,正则表达式也使用反斜杠作为转义。因此,要使用grep或sub或gsub检测转义,您需要将反斜杠翻两番
gsub("\\\\", "/", pathname)
# [1] "C:/Users/mhermans/somefile.csv"
你需要加倍反复“反复”反斜杠。每一对中的第一个是向grep机器发出信号,表明下一步是文字。
考虑:
nchar("\\A")
# returns `[1] 2`
答案 2 :(得分:3)
自2020年4月推出的版本4.0 起,R提供了用于指定原始字符串的语法。示例中的字符串可以写为:
path <- r"(C:\Users\mhermans\somefile.csv)"
来自?Quotes
:
还可以使用与C ++中使用的语法相似的原始字符常量:r“(...)”带有...任何字符序列,除了它必须不包含结束序列)“。也可以使用对[]和{},并且R可以代替r使用。为增加灵活性,只要出现相同数量的破折号,就可以在开头引号和分隔符之间放置多个破折号。在结束定界符和结束引号之间。
答案 3 :(得分:1)
如果文件E:\ Data \ junk.txt包含以下文本(不含引号):C:\ Users \ mhermans \ somefile.csv
您可能会收到以下声明的警告,但它会起作用:
texinp <- readLines("E:\\Data\\junk.txt")
如果文件E:\ Data \ junk.txt包含以下文本(带引号):“C:\ Users \ mhermans \ somefile.csv”
上述readlines语句也可能会给您一个警告,但现在包含:
“\” C:\用户\ mhermans \ somefile.csv \ “”
因此,要获得所需内容,请确保传入文件中没有引号,并使用:
texinp <- suppressWarnings(readLines("E:\\Data\\junk.txt"))