【问题标题】:r - Is it right to copy the old r version packages to the new folder that contains the packages of the new version?r - 将旧的 r 版本包复制到包含新版本包的新文件夹中是否正确?
【发布时间】:2018-05-02 12:37:50
【问题描述】:

我安装了最新版本的 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

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

【问题讨论】:

  • 你试过update.packages(check.built=TRUE,ask=FALSE)吗?
  • 您使用的是哪个操作系统?
  • @BrianStamper Windows
  • 但与@BenBolker 的建议配合得很好。非常感谢。
  • 好的。请注意,它应该是checkBuilt,就像@BrianStamper 的回答一样(但你一定已经弄清楚了)

标签: r package


【解决方案1】:

为较新版本的 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_3.4.3)

还有可能对此有用的软件包 installrhttps://cran.r-project.org/web/packages/installr/installr.pdf

【讨论】:

  • 帮助很大。最后一行的更正: install.packages(ip_3.4.3)
【解决方案2】:

至少对于 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) 部分,它工作正常。

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2021-07-10
    • 2016-01-14
    • 2014-01-15
    • 2015-04-30
    • 2015-03-13
    • 2020-03-31
    相关资源
    最近更新 更多