加载多个包并抑制消息

Dou*_*Fir 5 r

阅读这篇文章.而一个.

我想同时在oner和supress suppressPackageStartupMessages中加载包.

第一个链接中的答案使用了lapply:

packages <- c("tidyverse", "qdap", "stringr", "stringi", "textstem", "foreach", "caret", "xgboost", "quanteda")
lapply(packages, require, character.only = T)
Run Code Online (Sandbox Code Playgroud)

这会向控制台返回一个难看的列表:

[[1]]
[1] TRUE

[[2]]
[1] TRUE

[[3]]
[1] TRUE

[[4]]
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

另外,我还想摆脱那些在加载时发送到控制台的消息,例如

> library(tidyverse)
Loading tidyverse: ggplot2
Loading tidyverse: dplyr
Conflicts with tidy packages --------------------------------------------------------------------
accumulate(): purrr, foreach
filter():     dplyr, stats
lag():        dplyr, stats
when():       purrr, foreach
Run Code Online (Sandbox Code Playgroud)

是否有一个聪明,简短的方法来加载包的向量和suppressPackageStartupMessages?

Lun*_*una 12

你可以执行以下操作

suppressPackageStartupMessages({
    library(ggplot2)
    library(tidyr)
})
Run Code Online (Sandbox Code Playgroud)


amo*_*onk 5

我会选择:

packages <- c("tidyverse", "qdap", "stringr", "stringi", "textstem", "foreach", "caret", "xgboost", "quanteda")

zzz<-lapply(packages, function(xxx) suppressMessages(require(xxx, character.only = TRUE,quietly=TRUE,warn.conflicts = FALSE)))
Run Code Online (Sandbox Code Playgroud)


And*_*nes 5

要摆脱包消息,您可以使用suppressPackageStartupMessages()或者可以使用以下quietly = T选项:

packages <- c("tidyverse","stringr")
lapply(packages, function(x)require(x, character.only = T, quietly = T))
Run Code Online (Sandbox Code Playgroud)

要摆脱列表输入,您可以将整个内容包装在函数中invisible()

packages <- c("tidyverse","stringr")
invisible(lapply(packages, function(x) require(x, character.only = T, quietly = T)))
Run Code Online (Sandbox Code Playgroud)


akr*_*run 5

一种选择是

pacman::p_load(packages)
Run Code Online (Sandbox Code Playgroud)

  • 为此,我必须先加载pacman`library(pacman)`,然后再使用pacman加载所有其他库吗?显然,额外的代码行并不是什么大问题,但是,如果我正在做书呆子,我们的目标是整洁地调用所有软件包。 (2认同)
  • @DougFir 在我的普通新控制台中,我执行 `pacman::p_load(reshape2, stringr, Overflow, data.table, dplyr, tidyr, purrr)` 并且它一步加载所有这些包并且没有警告 (2认同)