2013-10-25 98 views
9

我在R中使用了幾個軟件包,但是我正在一臺機器上運行該腳本,該機器可能已經安裝了一些或已經安裝了一些軟件包。如果未安裝,請安裝軟件包(庫)

包是zoo,quantmod, data.table,...,和一堆更多。

這是我試過的: 有沒有什麼辦法檢查這些軟件包是否都安裝了,如果沒有安裝它?我不希望R浪費時間重新安裝已經存在的任何軟件包。

這是我曾嘗試:

pckg = c("zoo", "tseries", "quantmod", "MASS", "graphics", "plyr", "data.table", "gridExtra") 

is.installed <- function(mypkg){ 
    is.element(mypkg, installed.packages()[,1]) 
} 

for(i in 1:length(pckg)) { 
    if (!is.installed(pckg[i])){ 
     install.packages(pckg[i]) 
    } 
} 

是否有這樣做的更好的辦法?

另外,我需要自動設置安裝鏡像。我不知道該怎麼做。

謝謝!

回答

10

我有我使用的library,而不是這個方便的功能,如果缺少它,其安裝包,然後require的IT:

usePackage <- function(p) { 
    if (!is.element(p, installed.packages()[,1])) 
     install.packages(p, dep = TRUE) 
    require(p, character.only = TRUE) 
} 

在情況下,如果您需要在全球範圍內選擇CRAN鏡,這裏是一個方法:

r <- getOption("repos") 
r["CRAN"] <- "http://cran.us.r-project.org" 
options(repos = r) 
rm(r) 
+1

在我看來'require()'的行爲取決於R編輯器。雖然'require()'按照RKward中的描述工作,但它並沒有使用RStudio。相反,RStudio會給出警告消息。 因此'require(XXX)|| install.packages(「XXX」)'更安全,因爲它始終有效,無論您使用的編輯器如何。 – MERose