你可以使用下面的基本语法在R中一次性加载多个包:
lapply(some_packages, library, character.only=TRUE)
在这个例子中,some_packages代表了一个你想加载的软件包名称的向量。
下面的例子展示了如何在实践中使用这种语法。
例子:在R中加载多个包
下面的代码显示了如何在R中总结一个数据集,并使用三个不同的包创建一个图:
- dplyr
- ggplot2
- ggthemes
在这个例子中,我们使用三个不同的library()函数分别加载每个包:
library(dplyr)
library(ggplot2)
library(ggthemes)
#make this example reproducible
set.seed(0)
#create data frame
df <- data.frame(category=rep(c('A', 'B', 'C', 'D', 'E'), each=10),
value=runif(50, 10, 20))
#create summary data frame
df_summary <- df %>%
group_by(category) %>%
summarize(mean=mean(value),
sd=sd(value))
#plot mean value of each category with error bars
ggplot(df_summary) +
geom_bar(aes(x=category, y=mean), stat='identity') +
geom_errorbar(aes(x=category, ymin=mean-sd, ymax=mean+sd), width=0.3) +
theme_tufte()

使用这段代码,我们能够加载所有三个包,并产生一个总结数据集中数值的图。
然而,我们可以使用 lapply()函数实现同样的结果,只用一行代码就可以加载所有三个包:
#define vector of packages to load
some_packages <- c('ggplot2', 'dplyr', 'ggthemes')
#load all packages at once
lapply(some_packages, library, character.only=TRUE)
#make this example reproducible
set.seed(0)
#create data frame
df <- data.frame(category=rep(c('A', 'B', 'C', 'D', 'E'), each=10),
value=runif(50, 10, 20))
#create summary data frame
df_summary <- df %>%
group_by(category) %>%
summarize(mean=mean(value),
sd=sd(value))
#plot mean value of each category with error bars
ggplot(df_summary) +
geom_bar(aes(x=category, y=mean), stat='identity') +
geom_errorbar(aes(x=category, ymin=mean-sd, ymax=mean+sd), width=0.3) +
theme_tufte()

再一次,我们能够加载所有三个包并产生与之前相同的图。
不同的是,这次我们只用了一行代码就能加载所有三个包。
当你想加载一长串软件包而不需要每次都输入 library()函数时,这个lapply()函数特别有用。