【问题标题】:Can't install packages sources in R due to R converting between "//" and "\\"由于 R 在“//”和“\\”之间转换,无法在 R 中安装包源
【发布时间】: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 中的源代码安装到我想要的驱动器,但这不是故障,它只是一个不支持的已知事物。感谢您的帮助!

标签: r package


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    写这个路径 "\\\\驱动器\\目录"

    如果仍然无法写入,请以管理员身份运行您的脚本

    【讨论】:

    • 我确实说过我尝试了“\\\\drive\\directory”,但是我很感激我写了很多文字,因此不清楚我是否尝试过,所以我已编辑问题以使其更清楚。谢谢!
    猜你喜欢
    • 2020-07-02
    • 2017-08-15
    • 1970-01-01
    • 2014-06-14
    • 2018-09-24
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多