1

我正在使用没有 Internet 访问权限的 Windows 7 机器。到目前为止,我通过在 中创建二进制 CRAN 存储库的本地副本//server/x/bin/windows/contrib/3.1,然后运行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.

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

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

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

查看 3.1.2 和 3.2.1之间的差异install.packages,我可以看到很多变化。但是,该函数的源代码有 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")...使用

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

如果不是,我将不胜感激任何我可能犯的错误的指点。

4

1 回答 1

4

我发现了问题。R 3.2.1 新闻部分(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",而不是"win.binary"R 3.1.2。

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

options(pkgType="win.binary")

yourRinstallpath/etc/Rprofile.site

于 2015-08-12T07:35:03.063 回答