我正在使用没有互联网访问权限的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")
不会使用它......
所以我的问题是你们是否遇到过类似的问题?
如果不是,我会感激任何指出我本可以犯的错误。
答案 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