【问题标题】:R package installed in 2 different locationsR 包安装在 2 个不同的位置
【发布时间】:2015-12-11 06:20:00
【问题描述】:

我在 2 个位置安装了 R 包 ape,它们都是 .libPath() 的一部分
- ape 3.3 版在 location1
- ape location2 中的 3.4 版

ape 3.4 版本中,有一个新功能clustalomega。我没有加载 2 个包中的任何一个(使用 library

ape::clustalomega 在我的机器上不起作用。我怀疑这是因为 R 首先考虑的是它在 location1 中找到的旧版本的ape

我尝试用.libPath(rev(.libPath()) 颠倒libPath 的顺序,但它没有改变任何东西。

有没有办法确保我们从位置 2 优先获取包(我无法控制位置 1 上安装的内容)

【问题讨论】:

    标签: r package installation version


    【解决方案1】:

    解决方案在于函数unloadNamespace。似乎当R启动时,即使它没有加载library("ape"),它仍然加载包的命名空间,从它可以找到的第一个lib.loc(在本例中为location1)

    所以为了强制从另一个位置加载命名空间,我们需要这样做:

    ape::clustalomega # 不存在
    'ape' %in% loadedNamespaces() #returns TRUE
    unloadNamespace(ns = 'ape') 'ape' %in% loadedNamespaces() #returns FALSE loadNamespace(package = 'ape', lib.loc = location2)

    ape::clustalomega # 现在可以使用了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      相关资源
      最近更新 更多