在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"))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top