我在两个位置安装了R包ape
,它们是.libPath()
的两部分
- 位置1中的ape
版本3.3
- 位置2中的ape
版本3.4
ape
版本3.4中的,有一个新函数clustalomega
。我没有加载任何2个包(使用library
)
ape::clustalomega
无法在我的计算机上运行。我怀疑这是因为R首先考虑了它在location1中发现的ape
旧版本。
我试图使用.libPath(rev(.libPath())
来反转libPath的顺序,但它没有改变任何内容。
有没有办法确保我们从位置2优先获取包(我无法控制location1上安装的内容)
答案 0 :(得分:1)
解决方案在于功能unloadNamespace
。似乎当R启动时,尽管它没有加载library("ape")
,它仍然会加载包的命名空间,从它可以找到的第一个lib.loc(在本例中为location1)
因此,为了强制从其他位置加载命名空间,我们需要这样做:
ape :: clustalomega#不存在
“ape”%in%loadedNamespaces()#returns TRUE
unloadNamespace(ns ='ape')'ape'%in loadedloadedNamespaces()#returns FALSE loadNamespace(package ='ape',lib.loc = location2)ape :: clustalomega#现在有效