2016-11-04 161 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