RockScience
RockScience

Reputation: 18580

R package installed in 2 different locations

I have R package ape installed in 2 locations, that are BOTH part of the .libPath()
- ape version 3.3 in location1
- ape version 3.4 in location2

in ape version 3.4, there is a new function clustalomega. I have NOT loaded any of the 2 packages (using library)

ape::clustalomega doesn't work on my machine. I suspect it comes from the fact that R is considering first the old version of ape it has found in location1.

I have tried to reverse the order of the libPath, with .libPath(rev(.libPath()) but it didn't change anything.

Is there a way to ensure we take the package in priority from location 2 (I have no control on what is installed on location1)

Upvotes: 0

Views: 139

Answers (1)

RockScience
RockScience

Reputation: 18580

The solution lies with function unloadNamespace. It seems that when R is starting, eventhough it is not loading the library("ape"), it still loads the namespace of the package, from the first lib.loc it can find (in this case, location1)

So in order to force the loading of the namespace from another location, we need to do:

ape::clustalomega # doesn't exist
'ape' %in% loadedNamespaces() #returns TRUE
unloadNamespace(ns = 'ape') 'ape' %in% loadedNamespaces() #returns FALSE loadNamespace(package = 'ape', lib.loc = location2)

ape::clustalomega # now works

Upvotes: 1

Related Questions