一次加载多个包
我怎么能一次加载一堆包,而不重复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")
在这里引用。