繁体   English   中英

如何让 R 跟随 Windows 10 中的符号链接?

[英]How can I get R to follow symbolic links in Windows 10?

我有多个 RStudio 项目,每个项目都在自己的工作目录中。 所有项目都从同一系列的 CSV 文件中提取数据。

我想将 CSV 文件放在单独的“数据”目录中,然后在每个项目目录中放置一个指向数据目录的 Windows 快捷方式。 因此,目录结构将是:

/data
/project-1
/project-1/data = Windows shortcut pointing to /data
/project-2
/project-2/data = Windows shortcut pointing to /data
etc.

但是,当我尝试通过例如 project-1 的快捷方式访问“data”目录时,R 生成以下错误:

> write.csv(df, "data/df.csv")
Error in file(file, ifelse(append, "a", "w")) : 
  cannot open the connection
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) :
  cannot open file 'data/df.csv': No such file or directory

我究竟做错了什么?

我不知道这一点,因为过去 10 年我一直在使用 Linux 而不是 Windows,但是:

在 Windows 中,“快捷方式”不是符号链接。 要创建实际的符号链接,您必须以管理员身份打开命令提示符(!?! - 或激活开发人员模式),然后使用 mklink 创建链接。 RStudio 确实正确地遵循以这种方式创建的符号链接。

遗憾的是,Windows 资源管理器没有正确遵循以这种方式创建的符号链接。 并且您无法创建到目录的硬链接。 所以无论哪种方式,它都只有一半的功能。 血腥的窗户。

我知道这是一个老问题,但从未发布过解决方案。

解决方案:

在 windows 中创建软链接。 为此,请以管理员身份打开命令行。 使用“mklink”命令。 最好的方法是使用两个位置的完整路径。 mklink 是这样工作的:

mklink LinkLocation PathToFile

如果你想做目录使用“D\\”。

例如:“mklink D\\ C:/myNewLink F:/LocationOfMyDirectorry

这样的链接应该可以在 R 中正常工作(如常规文件夹/文件)。

好想! 不久前我实际上也有类似的想法:使用 Windows 快捷方式 ( .lnk s) 可以让人们在没有冗余的情况下引用资源,并无缝指向(或重定向)到各个位置......只需点击几下鼠标在 Windows 文件资源管理器中!

我的搜索发现了两个救生包: fs (来自tidyverse )和R.utils

现在fs确实具有与tidyverse的稳定性和一致性的tidyverse 它提供了一个标准化的接口来创建符号链接,它的fs::link_path()会让你阅读这些链接。

🚨🚨🚨但是,Windows 快捷方式不是符号链接。 🚨🚨🚨

因此,我更喜欢R.utils包中R.utils::filePath()强大功能和相关性。 一方面,它实际上可以专门扩展 Windows快捷方式.lnk s)。 另一方面,它将让您将目录的快捷方式视为目录

R.utils::filePath("./project-1/data")
#> "C:/absolute/path/to/data"

R.utils::filePath("./project-1/data/my_data.csv")
#> "C:/absolute/path/to/data/my_data.csv"

实际上,您可以将任意数量的此类快捷方式链接在一起!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM