【发布时间】:2019-01-10 16:06:47
【问题描述】:
我无法在 Windows 中将软件包从源代码安装到 R,并且我无法在此处和其他在线位置找到其他出现此错误的人。
我正在使用不是我个人 PC 的 PC,我只能将软件包安装到两个不同的目录。每个驱动器的文件路径都以两个正斜杠 ("//") 开头,并且仅在使用这些正斜杠或将正斜杠替换为反斜杠 ("\\") 时才有效。
如果我尝试为(例如)H2O 安装到目录“//drive/filepath”:
install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/rel-xu/1/R", lib = "//drive/filepath")
R 可以正常下载 .tar.gz 源文件,但是当它尝试安装它时出现错误:
* installing *source* package 'h2o' ...
** R
** demo
** inst
Warning in file.create(to[okay]) :
cannot create file '\drive/filepath/h2o/branch.txt', reason 'No such file or directory'
(THEN THE SAME WARNING FOR MULTIPLE OTHER FILES IT TRIES TO INSTALL TO THE SAME PATH)
** byte-compile and prepare package for lazy loading
Warning in file(con, "r") :
cannot open file '\\drive/filepath/h2o/branch.txt': No such file or directory
Error in file(con, "r") : cannot open the connection
Error : unable to load R code in package 'h2o'
ERROR: lazy loading failed for package 'h2o'
* removing '\\drive/filepath/h2o'
In R CMD INSTALL
Warning in install.packages :
installation of package ‘h2o’ had non-zero exit status
所以看起来 R 正在做的是将文件路径开头的双正斜杠(“//”)转换为双反斜杠(“\”)。然后 R 将字符串中的 ("\") 识别为单个反斜杠 ("\") 的转义字符,因此它尝试安装文件的字符串变为简单的 "\drive/filepath",这不起作用.无论如何,这就是我认为正在发生的事情。
我尝试改用四个正斜杠,认为它会将其更改为四个反斜杠,因此它会查找具有两个反斜杠的驱动器:
install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/rel-xu/1/R", lib = "////drive/filepath")
但是它试图在将正斜杠转换为反斜杠之前找到文件路径,并且显然没有将其识别为现有文件路径:
Warning in install.packages :
'lib = "////drive/directory"' is not writable
Error in install.packages : unable to install packages
我还尝试了使用四个和八个反斜杠的命令,结果相同,即。下面的两个命令给出了与上面相同的错误:
install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/rel-xu/1/R", lib = "\\\\drive/filepath")
install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/rel-xu/1/R", lib = "\\\\\\\\drive/filepath")
请问有什么办法可以解决这个问题吗?正如我所说,我不拥有这台 PC(它属于其他人),因此无法创建/更改驱动器,也不能下载其他软件。
注意:我可以从 .zip 文件进行安装。
【问题讨论】:
-
您是否尝试过使用与平台无关的构造函数(例如
file.path()或fs::path())来引用目标? -
我刚试过,谢谢。问题是这些函数只返回最初不起作用的字符串“//drive/filepath”。我越来越有信心,由于某种原因,R 最初检查文件路径“//drive/filepath”是否存在,然后下载包,然后删除前导“/”(如文件的帮助文件所述.path?),并尝试将文件安装到不存在的“/drive/filepath”。不知道为什么会这样。
-
R 在 Windows 网络路径方面遇到了相当困难的时期。第三个答案here可能对你有些用处;否则,谷歌搜索“R UNC 路径”,看看还有什么可能有用的。
-
没用,但您的评论有帮助。从那个链接我现在知道这些被称为“UNC 路径”。错误消息确实明确指出“不支持 UNC 路径”。所以答案是我无法从 R 中的源代码安装到我想要的驱动器,但这不是故障,它只是一个不支持的已知事物。感谢您的帮助!