207 votes

Charger plusieurs paquets à la fois

Comment puis-je charger un tas de paquets à la fois avec de retaper le besoin commande? J'ai essayé trois approches qui tous crash and burn.

En fait, je cherche à fournir un vecteur de noms de paquets à une fonction qui va charger.

x<-c("plyr", "psych", "tm")

require(x)
lapply(x, require)
do.call("require", x)

292voto

daroczig Points 11126

Plusieurs façon de faire le travail de votre projet si vous spécifiez character.only être TRUE. E. g.:

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

74voto

Tyler Rinker Points 27607

Dans un github paquet j'ai travaillé avec Dason (l'objectif est de pousser à CRAN), pacman a la possibilité de charger plusieurs paquets à la fois.

## Make sure your current packages are up to date
update.packages()
## devtools is required
library(devtools)
install_github("pacman", "trinker")

Afin que l'utilisateur puisse faire:

p_load(plyr, psych, tm) 

et si le paquet est manquant, la fonction de la télécharger à partir de CRAN.

25voto

Josh O'Brien Points 68397

Ceci devrait faire l'affaire:

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

(Le plus important est que l' args argument en do.call(what, args) doit être une liste --- même si elle n'a qu'un seul élément!)

18voto

bala Points 93

pour quelqu'un qui veut installer et charger des packages simultanément, je suis tombé sur cette fonction dans le lien ci-dessous 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)

2voto

ricardo Points 1800

J'utilise la fonction suivante:

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)
}

Cette tente de charger, et s'il ne l'installe et ensuite essayer de le charger à nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X