2015-12-11 2 views
0

У меня R пакет ape установлен в 2-х точках, которые являются одновременно частью .libPath()
- ape версии 3.3 в LOCATION1
- ape версия 3.4 в LOCATION2R установлен пакет в 2 разных местах

в ape версии 3.4, есть новая функция clustalomega. Я НЕ загружал ни одну из двух упаковок (с использованием library)

ape::clustalomega не работает на моей машине. Я подозреваю, что это происходит из-за того, что R рассматривает сначала старую версию ape, найденную в location1.

Я попытался отменить порядок libPath, с .libPath(rev(.libPath()), но ничего не изменил.

Есть ли способ, чтобы гарантировать, что мы принять пакет в приоритетном порядке от места расположения 2 (я не имею никакого контроля на том, что установлен на LOCATION1)

ответ

1

Решения лежит с функцией unloadNamespace. Похоже, что когда R запускается, хотя он не загружает library("ape"), он все еще загружает пространство имен пакета, из первого lib.loc он может найти (в данном случае location1)

Итак, чтобы заставить загрузка пространства имен из другого места, нам нужно сделать:

обезьяну :: clustalomega # не существует
'обезьяну' % в% loadedNamespaces() #returns ИСТИНА
unloadNamespace (нс = ' ape ')' ape '% in% loadedNamespaces() #returns FALSE loadNamespace (package =' ape ', lib.loc = location2)

ape :: clustalomega # сейчас работает

Смежные вопросы