install.packages()从R 3.1.2到R 3.2.1的变化

时间:2015-08-11 17:30:52

标签: r install.packages

我正在使用没有互联网访问权限的Windows 7计算机。到目前为止,我通过在//server/x/bin/windows/contrib/3.1中创建二进制CRAN存储库的本地副本,然后运行write_PACKAGES("//server/x/bin/windows/contrib/3.1")并最终在r["CRAN"]="file:////server/x";r["CRANextra"]=r["CRAN"];中设置C:/Program Files/R/R-3.1.2/etc/Rprofile.site来解决丢失的互联网连接。 / p>

但是自从R 3.2.1起,这不再起作用了。 install.packages错误消息中的路径表示R正在查找源包:

Cannot open compressed file '//server/x/src/contrib/PACKAGES'

我认为Windows上的R只查找二进制包!

查看install.packages与3.1.2和3.2.1之间的差异,我可以看到很多变化。但是,该函数的源代码有500多行,这使我很难看出问题所在。

我试图设置

options(install.packages.check.source="no")

并明确将type="win.binary"添加到install.packages - 两者均未成功。

有趣的是

contrib.url(options("repos")$repos["CRAN"],type="win.binary")

给出了正确的路径file:////server/x/bin/windows/contrib/3.2,但install.packages(...,type="win.binary")不会使用它......

所以我的问题是你们是否遇到过类似的问题?

如果不是,我会感激任何指出我本可以犯的错误。

1 个答案:

答案 0 :(得分:3)

我发现了这个问题。 R 3.2.1 NEWS部分(https://cran.r-project.org/src/base/NEWS)说

  
      
  • 使用二进制包的平台上的选项pkgType的默认值现在是“both”,因此如果二进制版本将尝试源包   不可用或不是最新的。
  •   

问题是RStudio没有直接调用install.packages,而是通过.rs.callAs等其他一些函数调用。在其中一个函数中,available.packages()在没有任何参数的情况下被调用。因此它通过type确定参数getOption("pkgType")。但是,自R 3.2.1以来,现在这是"both"而不是{3.1}中的"win.binary"

因此,问题的快速解决方法是添加

options(pkgType="win.binary")

yourRinstallpath/etc/Rprofile.site