题
在SPSS中运行R-Plugin时,我接收一个Windows路径字符串作为输入EG
'C:\Users\mhermans\somefile.csv'
我想在随后的R代码中使用该路径,但是需要将斜杠替换为前向斜线,否则R将其解释为Escapes(例如。“ u没有HEAX DIGITS”错误”错误。
但是,我找不到可以用Foward Slashes替换后斜线或双重逃脱的函数。所有这些功能都假设这些角色被逃脱了。
因此,是否有一些内容:
>gsub('\\', '/', 'C:\Users\mhermans')
C:/Users/mhermans
解决方案
您可以尝试在scan()中使用“允许镜”参数
X=scan(what="character",allowEscapes=F)
C:\Users\mhermans\somefile.csv
print(X)
[1] "C:\\Users\\mhermans\\somefile.csv"
其他提示
首先,您需要将其分配给一个名称:
pathname <- 'C:\\Users\\mhermans\\somefile.csv'
请注意,为了将其全部加倍的名称向量,这暗示了您如何使用Regex。实际上,如果您从文本文件中读取它,则R将为您完成所有加倍。介意你不是 真的 使后斜线加倍。它被存储为单个后斜线,但是它是这样显示的,需要从控制台上输入。否则,R解释器会尝试(并且经常失败)将其变成一个特殊的角色。为了使问题更加复杂,Regex也将后斜线作为逃生。因此,要检测GREP或SUB或GSUB的逃生,您需要将后挡板四倍
gsub("\\\\", "/", pathname)
# [1] "C:/Users/mhermans/somefile.csv"
您需要双重地“双”后斜切。每对的第一个是向Grep Machine发出信号,表明接下来是字面意思。
考虑:
nchar("\\A")
# returns `[1] 2`
如果文件e: data junk.txt包含以下文本(无引号):c: users mhermans somefile.csv
您可能会在以下声明中发出警告,但它将起作用:
texinp <- readLines("E:\\Data\\junk.txt")
如果文件e: data junk.txt包含以下文本(带引号):“ c: users mhermans mhermans somefile.csv”
上述读取声明也可能会给您警告,但现在将包含:
“ ” c: users mhermans somefile.csv “”
因此,要获得您想要的东西,请确保传入文件中没有引号,然后使用:
texinp <- suppressWarnings(readLines("E:\\Data\\junk.txt"))