174 votes

Manière indolore d'installer une nouvelle version de R (sous Windows)?

Andrew Gelman récemment déploré l'absence d'un simple processus de mise à niveau pour R (probablement plus pertinent sur Windows que Linux). Quelqu'un aurait-il un bon truc pour faire la mise à niveau, depuis l'installation du logiciel pour copier tous les paramètres/colis de plus?

Cette suggestion a été contenue dans les commentaires et c'est ce que j'ai utilisé récemment. Tout d'abord vous installez la nouvelle version, puis exécutez ce dans l'ancienne version:

#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")

Suivie par cette nouvelle version:

#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)

78voto

Joris Meys Points 38980

Juste pour être complet, il existe quelques moyens pour vous éviter ce problème. Comme Dirk dit, enregistrez votre colis dans un autre répertoire sur votre ordinateur.

install.packages("thepackage",lib="/path/to/directory/with/libraries")

Vous pouvez modifier la valeur par défaut .Library de la valeur à l'aide de la fonction .libPaths trop

.libPaths("/path/to/directory/with/libraries")

Cela permettra de mettre ce chemin comme une première valeur en .Library variable, la valeur par défaut.

Si vous souhaitez automatiser cette autre, vous pouvez le spécifier dans le Rprofile.site fichier, que vous trouverez dans le répertoire /etc/ de votre R construire. Puis il va charger automatiquement chaque fois que la R des charges, et vous n'avez pas à vous soucier de tout autre. Vous pouvez simplement installer et charger des packages à partir d'un répertoire spécifié.

Enfin, j'ai un petit code inclus dans mon Rprofile.site me permettant de réinstaller tous les paquets lorsque j'installe une nouvelle version R. Vous avez juste à les énumérer avant la mise à jour vers la nouvelle version R. - Je le faire à l'aide d'un .RData fichier contenant une liste mise à jour avec tous les paquets.

library(utils)

## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
  install.packages(pkgs[!installed])
}

Je fais le packagelist.RData en spécifiant .Last() dans mon Rprofile.site. Cela met à jour la liste des paquets si j'ai installée :

.Last <- function(){
  pkgs <- installed.packages()[,1]
  if (length(pkgs) > length(installed)){
    save(pkgs,file="G:\Setinfo\R\packagelist.RData")
  }
}

Lorsque j'installe une nouvelle version R, je viens d'ajouter les éléments nécessaires à la Rprofile.site fichier et tous les paquets sont réinstallés. Je dois ajuster le Rprofile.site de toute façon (à l'aide de la somme des contrastes, l'ajout du code supplémentaire pour Tinn-R, de ces choses), donc c'est pas vraiment du travail supplémentaire. Il faut juste de temps supplémentaire, l'installation de tous les paquets de nouveau.

Ce dernier est équivalent à ce qui est indiqué dans la question d'origine comme une solution. Je n'ai pas besoin de vous soucier de faire le "installé" liste de la première.

Encore une fois, ce n'est pas un travail impeccable si vous avez des paquets qui ne sont pas installés de CRAN. Mais ce code est facilement étendu pour inclure ceux qui sont trop.

Edit: Il y a une parenthèse manquante dans le code

45voto

simon_icl Points 119

C'est une vieille question, bien sûr, mais il pourrait y avoir une nouvelle réponse facile, que je viens de trouver.

 install.packages("installr")
require(installr)
updateR()
 

La meilleure façon de procéder consiste à utiliser le système RGui. Tous vos colis seront transférés dans le nouveau dossier et les anciens seront supprimés ou enregistrés (vous pouvez choisir). Ensuite, lorsque vous ouvrez RStudio à nouveau, il reconnaît immédiatement que vous utilisez une version mise à jour. Pour moi cela a fonctionné comme un charme,

Simon

27voto

Dirk Eddelbuettel Points 134700

Deux petites suggestions:

  1. L'utilisation de Gabor est batchfiles qui constituent des outils d'aide avec, par exemple, cette masse de bibliothèque de délocalisations. Mise en garde: je ne les ai pas utilisé.

  2. Ne pas installer les bibliothèques au sein de la "filetree" du installé R version. Sur Windows, je peut mettre en R C:/opt/R/R-$version, mais la place dans toutes les bibliothèques C:/opt/R/library/ à l'aide de l'extrait de code suivant car elle atténue le problème en premier lieu:

$ cat .Renviron         # this is using MSys/MinGW which looks like Cygwin  
## Example .Renviron on Windows    
R_LIBS="C:/opt/R/library"

26voto

Kevin Wright Points 840

La méthode suggérée ci-dessus ne fonctionnera pas complètement si vous avez des paquets qui ne proviennent pas de CRAN. Par exemple, un package personnel ou un package téléchargé à partir d'un site non-CRAN.

Ma méthode préférée sous Windows (mise à niveau de 2.10.1 à 2.11.0):

 Install R-2.11.0
Copy R-2.10.0/library/* to R-2.11.0/library/
Answer "no" to the prompts asking you if it is okay to overwrite.
Start R 2.11.0 and then type
update.packages()
 

4voto

Tal Galili Points 4627

Suivant la suggestion de Dirk, voici un code R pour le faire sous Windows: Comment mettre à niveau facilement R sous Windows XP

Mise à jour (15.04.11): J'ai écrit un autre article sur le sujet, expliquant comment traiter les problèmes courants liés à la mise à niveau de R sur Windows 7.

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