我在两个位置安装了R包ape,它们都是.libPath()的一部分
ape 3.3版在location1ape 3.4版location2中
在ape版本3.4中,有一个新函数clustalomega。我还没有加载两个包中的任何一个(使用library)
ape::clustalomega不能在我的机器上工作。我怀疑这是因为R首先考虑的是它在location1中找到的旧版本的ape。
我尝试用.libPath(rev(.libPath())颠倒libPath的顺序,但没有改变任何东西。
有没有办法确保我们优先从位置2获取软件包(我无法控制location1上安装了什么)
发布于 2015-12-11 14:39:21
解决方案在于函数unloadNamespace。似乎当R启动时,即使它没有加载library("ape"),它仍然从它能找到的第一个lib.loc (在本例中是location1)加载包的名称空间。
因此,为了强制从另一个位置加载名称空间,我们需要这样做:
ape::clustalomega #不存在
% loadedNamespaces() #中的‘'ape’%返回TRUE
unloadNamespace(ns = 'ape') 'ape‘%in% loadedNamespaces() #返回错误的包(loadNamespace= 'ape',lib.loc = location2)
ape::clustalomega #现在可以在上运行
https://stackoverflow.com/questions/34217269
复制相似问题