一次加载多个包

我怎么能一次加载一堆包,而不重复inputrequire命令? 我已经尝试了三种方法,所有这些方法都会导致崩溃和烧毁

基本上,我想提供一个包名称向量的函数,将加载它们。

x<-c("plyr", "psych", "tm") require(x) lapply(x, require) do.call("require", x) 

你提出的函数有几个排列组合,但只有当你指定character.only参数为TRUE 。 快速示例:

 lapply(x, require, character.only = TRUE) 

我维护的CRAN软件包pacman (与Dason Kurkiewicz合着)可以实现这一点:

所以用户可以这样做:

 ## install.packages("pacman") pacman::p_load(dplyr, psych, tm) 

如果软件包丢失, p_load将从CRAN或Bioconductor下载。

这应该做的伎俩:

 lapply(x, FUN = function(X) { do.call("require", list(X)) }) 

(关键是do.call(what, args)中的args参数do.call(what, args) 必须是一个列表—即使它只有一个元素!)

对于想要同时安装和加载软件包的人,我在下面的链接中find了这个函数https://gist.github.com/stevenworthington/3178163

 # ipak function: install and load multiple R packages. # check to see if packages are installed. Install them if they are not, then load them into the R session. ipak <- function(pkg){ new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])] if (length(new.pkg)) install.packages(new.pkg, dependencies = TRUE) sapply(pkg, require, character.only = TRUE) } # usage packages <- c("ggplot2", "plyr", "reshape2", "RColorBrewer", "scales", "grid") ipak(packages) 

您可以简单地使用lubripack软件包,并整齐地安装新软件包,然后将其全部加载到一行中。

lubripack(“plyr”,“psych”,“tm”)

在RStudio中运行上面的代码之后,这里是输出。

在这里输入图像说明

如何安装包装:

运行下面的代码下载包并从GitHub安装。 无需拥有GitHub帐户。

 library(devtools) install_github("espanta/lubripack") 

build立在达罗齐的解决scheme,如果你不想指定一个列表作为input,你可以使用

 # Foo mLoad <- function(...) { sapply(sapply(match.call(), as.character)[-1], require, character.only = TRUE) } # Example mLoad(plyr, dplyr, data.table) 

比…短的…

 lapply(list('plyr', 'dplyr', 'data.table'), require, character.only = TRUE) 

我使用以下函数:

 mrip <- function(..., install = TRUE){ reqFun <- function(pack) { if(!suppressWarnings(suppressMessages(require(pack, character.only = TRUE)))) { message(paste0("unable to load package ", pack, ": attempting to download & then load")) install.packages(pack) require(pack, character.only = TRUE) } } lapply(..., reqFun) } 

这会尝试加载,如果安装失败,然后尝试再次加载。

另一种select来自软件包easypackages 。 安装完成后,您可以以最直观的方式加载软件包:

 libraries("plyr", "psych", "tm") 

该软件包还包含一个安装几个软件包的function:

 packages("plyr", "psych", "tm") 

在这里引用。