2015-10-15 5 views
1

Мне нужно запустить 2 разных сценария в R без перезапуска сессии. В первом я использую пакет mgcv, а во втором мне нужен gam. Я написал сценарий, который отделяет и удаляет пакет mgcv и устанавливает и загружает gam. Но все же после того, как я хочу запустить функцию gam(), я получаю сообщение об ошибке, указывающее, что mgcv не найден. Что я расцениваю, как R ищет mgcv пакета для его установки ...Как предотвратить попытку R от загрузки mgcv

Вот MWE:

install.packages(paste(path.pkgs,'mgcv_1.8-7.zip',sep=''),repos=NULL) 
    require(mgcv) 
    ## FIRST SCRIPT ## 

    detach(package:mgcv) 
    remove.packages('mgcv') 
    unloadNamespace('mgcv') 

    require(gam) 
    ## SECOND SCRIPT ## 
    gam(as.formula(t.thr.fm),data=data) 

который возвращает ошибку:

Error in get(method, envir = home) : 
    cannot open file 'H:/data/Documents/R/R-3.1.3/library/mgcv/R/mgcv.rdb': No such file or directory 

Любые идеи вместо перезапуска сеанса ?

EDIT:

Решение было предложено Floo0 с использованием пакета :: функции, к сожалению, не вариант.

ответ

1

вы можете сказать R взять функцию из определенного пакета через этот синтаксис:

package::function 

Так что в вашем случае (не отделяться mgtv) и использовать

mgcv::gam(...) 
gam::gam(...) 

Если функция не экспортируется в пространство имен функции, которую вы также можете попробовать package:::function с 3 :

+0

Спасибо. Проблема состоит в том, что существует несколько разных сценариев, использующих функцию в разных версиях. Я бы действительно не хотел менять весь код во всех версиях. Однако, если нет другого варианта, мне нужно будет это сделать :) – simoet

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