r - 将旧的r版本软件包复制到包含新版本软件包的新文件夹是否正确?

时间:2018-05-02 12:37:51

标签: r package

我安装了最新版本的r 3.5.0并从旧版本3.4.3复制了所有软件包,并将它们粘贴到当前版本文件夹3.5 我认为这不是复制和粘贴软件包的好方法,因为RStudio要求我重新安装我调用的软件包。例如,当我安装zoo时,它给了我这个错误:

Error: package or namespace load failed for ‘zoo’:
package ‘zoo’ was installed by an R version with different internals; it 
needs to be reinstalled for use with this R version

我该怎样做才能以正确的方式复制它们?

2 个答案:

答案 0 :(得分:2)

为较新版本的R重新构建软件包比应对它们更安全。

重新构建所有软件包的最简单方法是将旧版R中的软件包列表保存到文件中,然后将其加载到新版本的R中并安装它们:

# In old version of R:
ip <- installed.packages()[,1]
write(ip,"rpackages_in_3.4.3.txt")
q()

# In new version of R:
ip_3.4.3 <- readLines("rpackages_in_3.4.3.txt")
setRepositories(graphics=FALSE, ind=1:6)
install.packages(ip)

还有一个包 installr 可能对此有用: https://cran.r-project.org/web/packages/installr/installr.pdf

答案 1 :(得分:1)

至少对于Windows,或许还有其他人,你所做的以及@Ben Bolker所建议的正是手册中大多数人应该做的事情:

  

对于大多数人来说,最好的办法是在新安装中将任何已安装的软件包复制到库文件夹,在新R中运行update.packages(checkBuilt = TRUE,ask = FALSE)然后删除旧安装的剩余内容。

来自:https://cran.r-project.org/bin/windows/base/rw-FAQ.html#What_0027s-the-best-way-to-upgrade_003f

然而,他们也认为这是“品味的问题”,所以如果你找到另一种适合你的方法,我只想指出你尝试的方法是有效的,甚至建议的文档。

更新:我刚刚在我自己的系统上更新了R,因为我使用固定位置来获取我的包(即路径中没有版本号)我甚至没有将它们从一个地方复制到另一个地方,我只做了update.packages(checkBuilt = TRUE, ask = FALSE)部分,它可以正常工作。