在R 3.4.0

时间:2017-04-25 09:42:50

标签: r cmd r-package

我最近将R更新到最新版本:3.4.0。 R安装在网络位置H:/上。现在,当我尝试安装本地二进制包时,会发生一些奇怪的事情:

  filename <- paste0("R:/path/independeR_", versions, ".zip")
  install.packages(filename,
                   repos = NULL, type = "source",
                   lib = gsub("\\\\\\\\networkpath/home/[[:alpha:]]*/",
                              "H:/", .libPaths()[1]))

H:/R:/都是网络位置。在.libPaths()中,默认位置位于H:/位置,但会显示整个网络地址。在致电install.packages时,我替换了这个。

上面的代码失败,输出如下:

'\\networkpath\home\JDUB~PN6\DOCU~UZL\R\R-34~TN4.0' is not recognized as an internal or external command,
operable program or batch file.
Warning in install.packages :
  running command '"//networkpath/home/JDUB~PN6/DOCU~UZL/R/R-34~TN4.0/bin/x64/R" CMD INSTALL -l "H:\Documents\R\R-3.4.0\library" "R:/path/independeR_0.1.8.zip"' had status 1
Warning in install.packages :
  installation of package ‘R:/path/independeR_0.1.8.zip’ had non-zero exit status

这里有两件让我感到惊讶的事情。目录名都是混乱的(DOCU~UZL而不是Documents等),但由于某种原因,Command promt似乎很好。更有趣的是:

当我尝试将命令"//networkpath/home/JDUB~PN6/DOCU~UZL/R/R-34~TN4.0/bin/x64/R" CMD INSTALL -l "H:\Documents\R\R-3.4.0\library" "R:/path/independeR_0.1.8.zip"直接放入命令提示符时,输出非常相似:

C:\Users\jdubbeldam>"//networkpath/home/JDUB~PN6/DOCU~UZL/R/R-34~TN4.0/b
in/x64/R" CMD INSTALL -l "H:\Documents\R\R-3.4.0\library" "R:/path/independeR_0.1.8.zip"

'\\networkpath\home\JDUB~PN6\DOCU~UZL\R\R-34~TN4.0' is not recognized as
 an internal or external command,
operable program or batch file.

出于某种原因,CMD似乎在中途切断了命令的路径。我猜这是因为命令太长了。当我尝试相同的命令,但使用H:/Documents/R/R-3.4.0/bin/x64/R时,安装就可以了。

我希望能够从脚本中自动安装此软件包,所以我想从R内部解决这个问题。有没有办法让R使用较短的H:/Documents/R/R-3.4.0/bin/x64/R

2 个答案:

答案 0 :(得分:0)

我成功完成了以下工作。但是,我认为它非常难看,并且仍然希望看看是否有可能在其他方面做到这一点。

require_dependency

答案 1 :(得分:0)

我在更新软件包方面遇到了问题,而在搜索时我发现有一个报告的bug影响从Windows 10中获取文件的时间戳:   https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17261

  

从R 3.4.0开始,file.info 有时返回mtime,   目录的atime和ctime。它似乎有事可做   与分享。这会影响使用file.mtime的函数   update.packages。

     

转载:

     

使用随机目录尝试file.info()。如果它返回合法的   文件时间,打开Windows资源管理器窗口并导航到   目录,然后再次运行调用,它将返回s。

     

在某些情况下,即使目录未打开(或   在开放的资源管理器窗口的路径中),但这不一致。

Tomas Kalibera的评论:

  

感谢您的报告,这是一个已修复的已知错误   最近在R-devel

我发现当我关闭文件浏览器窗口时,时间戳工作正常并且没有显示为NA&#39; s。 这可能会导致您的代码无效。