为什么R使用正斜杠(/)而不是反斜杠(\)在文件路径中?

3
我在教授一门在线课程时,一名学生问我为什么R在使用read.csv和其他相关函数时只使用/而不是\来表示文件路径。我尝试查看文档,但它并没有详细说明这一点。因为我使用的是Mac,而在Mac上默认使用\,但在Windows机器上不是这样。
由于我没有接受过计算机科学培训,所以我对这个问题感到有些困惑,恐怕无法回答这个问题。学生总是问些奇怪的问题!

1
你已经有了一个不错的答案,但我想再加上两个链接,这些链接在我和我的学生讨论这个话题时非常有用:文件路径中正斜杠(/)和反斜杠()的区别(不是R特定的); [在R中转义字符串或路径中的](https://dev59.com/pWYq5IYBdhLWcg3wzDrk#14185627)。干杯 - Henrik
@Henrik 谢谢你!我很喜欢第一个链接中的历史,足够详细让我理解并尝试向学生解释。 - Lalochezia
2个回答

7

有趣的问题。

首先,“正斜杠”/实际上更常见,因为它被Unix、Linux和macOS使用。

其次,“反斜杠”\实际上有些麻烦,因为它也是一个转义字符。所以每当你想要一个时,在字符串中需要输入两个:"C:\\TEMP"

第三,Windows上的R知道这一点并提供帮助!所以你可以使用正斜杠代替反斜杠:"C:/TEMP"的效果相同!

第四,你可以让R为你计算路径,它会使用分隔符:file.path("some", "dir")

所以简短的答案是:在Windows上,R同时使用两种方式,并且让你选择哪种更容易。但记得使用两个反斜杠(除非你使用最新的R 4.0.0功能中的原始字符串,我现在将不予以解释)。


我认为这实际上将是我使用原始字符串的主要用例。我经常从Windows资源管理器中复制路径,只需将其包装在r"(...)"中比我迄今为止所做的要容易得多。 - Roland
谢谢!那么什么是转义字符? - Lalochezia
请参见我上面发布的第二个链接。 - Henrik
感谢您添加链接,@Henrik。没错,原始字符串很棒。唯一的小代价是需要依赖 R >= 4.0.0。旧的 R 3.* 安装仍然存在很多。对于本地工作来说没有问题。 - Dirk Eddelbuettel

0

(注:在Mac上使用反斜杠作为目录文件夹分隔符是最近的创新。请参见Mac文件夹分隔符的历史

我认为,如果您回顾历史(或者如果您不在当时发生的时间内,则查找它),您会发现Unix(Linux完全复制了它)率先实现了这一点。它先于MS-DOS、Mac或最后的Windows出现。R是S的仿效克隆,而S是像Unix一样在贝尔实验室开发的。

Mac最初使用冒号(:)作为文件夹分隔符(并且仍然不接受它们作为文件名),并在其长期过渡到从ATT获得许可的BSD Unix期间转换为斜杠。

问题不应该是:为什么Microsoft选择使用反斜杠?


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