2015-10-15 93 views
1

我需要在R中運行2個不同的腳本,而無需重新啓動會話。在第一次使用包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 

任何想法,而不是重新啓動會議?

編輯:

使用包::函數由Floo0建議的解決方案是不幸的是不是一個選項。

回答

1

可以讓R通過這句法採取的函數從一個特定的軟件包:

package::function 

所以你的情況(不分離mgtv),並使用

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

如果函數沒有出口在功能的命名空間,你也可以嘗試package:::function與3 :

+0

謝謝。問題是,在不同版本中使用該函數有幾個不同的腳本。我真的不想更改所有版本中的整個代碼。但是,如果沒有其他選擇,我將不得不這樣做:) – simoet