R中文件路径的原始文本字符串

djq*_*djq 29 string r

在R中指定文件路径字符串时是否可以使用前缀来忽略转义字符?

例如,如果我想example.csv在使用Windows时读取文件,我需要手动更改\/\\.例如,

'E:\DATA\example.csv'
Run Code Online (Sandbox Code Playgroud)

'E:/DATA/example.csv'

data <- read.csv('E:/DATA/example.csv')
Run Code Online (Sandbox Code Playgroud)

python我可以使用前缀我的字符串,r以避免这样做(例如r'E:\DATA\example.csv').是否有类似的命令R,或者我可以用来避免出现此问题的方法.(我在windows,mac和linux之间移动 - 这只是windows OS上的一个问题).

And*_*rie 38

您可以使用file.path独立于操作系统构建正确的文件路径.

file.path("E:", "DATA", "example.csv")
[1] "E:/DATA/example.csv"
Run Code Online (Sandbox Code Playgroud)

还可以使用以下命令将文件路径转换为操作系统的规范表单normalizePath:

zz <- file.path("E:", "DATA", "example.csv")
normalizePath(zz)
[1] "E:\\DATA\\example.csv"
Run Code Online (Sandbox Code Playgroud)

但是直接回答你的问题:我不知道使用R忽略转义序列的方法.换句话说,我不相信可以从Windows复制文件路径并将其直接粘贴到R.

但是,如果你真正想要的是一种从Windows剪贴板复制和粘贴并获得有效R字符串的方法,请尝试 readClipboard

例如,如果我从Windows资源管理器复制文件路径,然后运行以下代码,我会得到一个有效的文件路径:

zz <- readClipboard()
zz
[1] "C:\\Users\\Andrie\\R\\win-library\\"
Run Code Online (Sandbox Code Playgroud)

  • `readClipboard()`确实使手动工作变得容易!谢谢。 (2认同)

G. *_*eck 7

1)如果E:\DATA\example.csv在剪贴板上,则执行以下操作:

example.csv <- scan("clipboard", what = "")
## Read 1 item
example.csv
## [1] "E:\\DATA\\example.csv"
Run Code Online (Sandbox Code Playgroud)

现在,您可以将"E:\\DATA\\example.csv"上面的输出复制到剪贴板上,然后将其粘贴到源代码中,如果您需要对路径进行硬编码.

如果E:\DATA\example.csv在文件中,则类似的备注适用.

2)如果文件存在,那么另外要尝试的是:

example.csv <- file.choose()
Run Code Online (Sandbox Code Playgroud)

然后导航到它并继续如上面的1)(除了file.choose行替换scan那里的语句).

3)请注意,read.csv在Windows上需要将反斜杠更改为正斜杠是不正确的,但如果出于某种原因你确实需要进行该转换,那么如果该文件存在则会将反斜杠转换为正斜杠(但如果有的话)不存在然后它会发出恼人的警告,所以你可能想要使用下面的其他方法之一):

normalizePath(example.csv, winslash = "/")
Run Code Online (Sandbox Code Playgroud)

并且即使文件不存在,这些也会将反斜杠转换为正斜杠:

gsub("\\", "/", example.csv, fixed = TRUE)
## [1] "E:/DATA/example.csv"
Run Code Online (Sandbox Code Playgroud)

要么

chartr("\\", "/", example.csv)
## [1] "E:/DATA/example.csv"
Run Code Online (Sandbox Code Playgroud)

编辑:添加更多信息normalizePath.


小智 7

现在可以使用 R 版本 4.0.0。查看?Quotes更多。

例子

r"(c:\Program files\R)"
## "c:\\Program files\\R"
Run Code Online (Sandbox Code Playgroud)