2016-11-04 165 views
0

我已經爲我已經安裝的軟件包編寫了一個函數。 在此我只想寫一個聲明,一個新包需要自動安裝,一旦我們調用它。我想用下面的這個函數來安裝ROCR軟件包。在R中自動安裝新軟件包

libraries <- function() 

list.of.packages <- c("caTools", "caret", "glmnet","rpart","rpart.plot","randomForest","rattle", 
        "e1071") 
new.packs<- if(list.of.packages[!list.of.packages %in% installed.packages() [,"Package"])]{ 
install.packages("new.packs") 
library(new.packs) 
}else { 
print("All packages installed") 

} }

+0

您是否搜索CRAN?有幾個軟件包提供此功能(即,如果軟件包不存在,則啓用軟件包的自動安裝)。 – hrbrmstr

+1

pacman .......... –

回答

1

這個怎麼樣一般方法:

if(!"caret" %in% installed.packages()) install.packages("caret") 

可以調整,以您的需求,爲獲得尚未安裝的軟件包的載體中,然後將它傳遞給install.packages

list.of.packages <- c("caTools", "caret", "glmnet","rpart","rpart.plot","randomForest","rattle", 
         "e1071") 

if(length(which(!list.of.packages %in% installed.packages()))){ 
    install.packages(list.of.packages[!list.of.packages %in% installed.packages()]) 
} 
+0

非常感謝:) ..它的工作!太好了! – Nirmal

+0

嗨,我剛剛嘗試過的代碼,如果工作。但是,可以告訴我,如何調用已安裝的包,該函數內。請問太多的問題。 IN R,我們把安裝包稱爲庫(插入符號) – Nirmal

+0

這不是一個函數,它只是一個「if語句」。爲什麼你不只是添加一個循環,像'for(我在list.of.packages)庫(我,character.only = T)'? –

3

library pacman爲您做到這一點。

例如

pacman::p_load(data.table, lubridate) 

加載庫並在它們不可用時安裝它們。

+1

當我說這是完成這項任務的最佳方案時,我完全沒有偏見。這裏沒有偏見。沒有。 – Dason