有没有一种方法可以让R字符串变成原样输出(不转义)?

8
典型案例:
path <- "C:/test/path" # great
path <- "C:\\test\\path" # also great
path <- "C:\test\path"

错误:'\p'是未识别的转义符,此处字符串开头为"C:\test\p"

当然,\t实际上是一个转义符。

有没有可以将字符串视为保留格式的标记?或者可以进行编码吗?

当在Windows中复制/粘贴路径名时,这将非常有用...


2
可能与这个问题相同,与R字符串中的转义字符(反斜杠)无关。 - 9Heads
有没有办法防止 R 字符串将反斜杠视为转义字符的起始符?(在我的用例中,我需要防止文件读取和打印显示错误,因为文本中有反斜杠后跟一些字符) - nikpod
4个回答


0

你可以使用 scan(但只能在交互式会话中使用,不能在源代码中使用)

例如:

path=scan(what="",allowEscapes=F,nlines=1)
C:\test\path
print(path)

然后按下 Ctrl+A ++ Ctrl+Enter
就会给你结果。

但在函数或源代码中不起作用:

{
path=scan(what="character",allowEscapes=F,nlines=1)
C:\test\path
print(path)
}

抛出错误


0
也许是 readline() 或者 scan(what = "charactor"),两者都在终端中工作,而不是脚本或函数。

1.readline():

> path <- readline()
C:\test\path #paste your path, ENTER
> path
[1] "C:\\test\\path"

2.scan(what = "charactor"):

> path = scan(what = "character")
1: C:\test\path #paste, ENTER
2: #ENTER
#Read 1 item
> path
[1] "C:\\test\\path"

编辑:

尝试这个:

1. 定义一个函数getWindowsPath()

> getWindowsPath <- function() #define function 
  {
    return(scan(file = "clipboard", what = "character"))
  }

2.使用CTRL+C复制Windows路径

#CTRL+C: C:\test\path  
> getWindowsPath()
#Read 1 item
[1] "C:\\test\\path"

0

如果你在 Windows 中复制和粘贴,可以建立一个文件连接到剪贴板。然后,你可以使用 scan 从中读取,并关闭 allowEscapes 参数。但是,Windows 允许文件路径中有空格,而 scan 不理解这一点,因此你需要使用 paste0 包装结果,并将 collapse 设置为长度为 0 的字符。

x = file(description = "clipboard")
y = paste0(scan(file = x, what = "character", allowEscapes = F), collapse = "")

不幸的是,这只适用于当前剪贴板中的路径,因此如果您正在将许多路径复制并粘贴到R脚本中,则这不是一个解决方案。在那种情况下的解决方法是将每个路径粘贴到单独的文本文件中并保存。然后,在您的主要脚本中,您可以运行以下命令:

y = paste0(scan(file = "path1.txt", what = "character", allowEscapes = F), collapse = "")

你可能需要为每个路径保存一个文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接