我安装了最新版本的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
我该怎样做才能以正确的方式复制它们?
答案 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)
部分,它可以正常工作。