首页 > 解决方案 > 由于 R 在“//”和“\\”之间转换,无法在 R 中安装包源

问题描述

我无法在 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 文件进行安装。

标签: rpackage

解决方案


答案是目前无法做到这一点(使用撰写本文时最新的 R 版本,v3.5.1 “Feather Spray”)。以“//”或“\”开头的文件路径是 UNC 指定的目录,当前版本的 R 不支持从源安装包。


推荐阅读