Articles - R

Une fonction pour l'installation instantan?e de packages R et/ou le chargement

  |   1021  |  Poster commentaire  |  R
Puisque les fonctions R library() et require() ne peuvent charger qu'un seul package ? la fois, il est n?cessaire de faire des appels r?p?t?s de ces fonctions lorsque l'on a plusieurs packages ? charger - cela peut ?tre assez ennuyeux .. Donc, voici une fonction tr?s pratique pour l'installation/chargement des packages. Il installe les packages si ils sont manquants et les charge s'ils n'ont pas encore ?t? charg?. Je l'ai mis dans mon RProfile.site afin que je puisse facilement installer / charger des packages avec un seul appel et je suis tr?s content de cette fonction ..

La fonction est la suivante :

Code R :
 
# Script name: instant_pkgs.R
# Purpose: Package installation and loading
# Author: Kay Cichini
# Date: 2012-06-19
# Licence: cc by-nc-sa
 
instant_pkgs <- function(pkgs) {
    pkgs_miss <- pkgs[which(!pkgs %in% installed.packages()[, 1])]
    if (length(pkgs_miss) > 0) {
        install.packages(pkgs_miss)
    }
 
if (length(pkgs_miss) == 0) {
message("\n ...Packages were already installed!\n")
}
 
    # install packages not already loaded:
    pkgs_miss <- pkgs[which(!pkgs %in% installed.packages()[, 1])]
    if (length(pkgs_miss) > 0) {
        install.packages(pkgs_miss)
    }
 
    # load packages not already loaded:
    attached <- search()
    attached_pkgs <- attached[grepl("package", attached)]
    need_to_attach <- pkgs[which(!pkgs %in% gsub("package:", "", attached_pkgs))]
 
    if (length(need_to_attach) > 0) {
      for (i in 1:length(need_to_attach)) require(need_to_attach[i], character.only = TRUE)
    }
 
if (length(need_to_attach) == 0) {
message("\n ...Packages were already loaded!\n")
}
}
 
# Examples:
instant_pkgs(c("base", "jpeg"))
 
 


Source:
Cet article a ?t? pour la premi?re fois publi? ? theBioBucket
http://www.r-bloggers.com/a-wrapper-function-for-instant-package-installation-loading/

Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons