Manière indolore d’installer une nouvelle version de R?

Andrew Gelman a récemment déploré l’absence d’un processus de mise à niveau facile pour R (probablement plus pertinent que Windows sous Windows). Quelqu’un at-il un bon truc pour effectuer la mise à niveau, de l’installation du logiciel à la copie de tous les parameters / paquets?

Cette suggestion était contenue dans les commentaires et est ce que j’ai utilisé récemment. Tout d’abord, installez la nouvelle version, puis exécutez-la dans l’ancienne version:

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

Suivi par ceci dans la nouvelle version:

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

Pour être complet, il existe des moyens de vous empêcher d’avoir ce problème. Comme dit Dirk, sauvegardez vos paquets dans un autre répertoire de votre ordinateur.

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

Vous pouvez également modifier la valeur par défaut de .Library utilisant la fonction .libPaths

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

Cela placera ce chemin comme première valeur dans la variable .Library et en fera la valeur par défaut.

Si vous souhaitez automatiser cela davantage, vous pouvez le spécifier dans le fichier Rprofile.site, que vous trouverez dans le répertoire / etc / de votre build R. Ensuite, il se chargera automatiquement chaque fois que R sera chargé, et vous n’aurez plus à vous en soucier. Vous pouvez simplement installer et charger des packages à partir du répertoire spécifié.

Enfin, mon petit fichier Rprofile.site contient un petit code qui me permet de réinstaller tous les paquets lorsque j’installe une nouvelle version R. Il vous suffit de les répertorier avant de mettre à jour la nouvelle version R. Je le fais en utilisant un fichier .RData 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 site Rprofile.site. Cela met à jour la liste des paquets si j’en ai installé:

 .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, j’ajoute simplement les éléments nécessaires au fichier Rprofile.site et tous les packages sont réinstallés. Je dois tout de même ajuster le site Rprofile.site (en utilisant des contrastes de sum, en ajoutant le code supplémentaire pour Tinn-R, ces choses), donc ce n’est pas vraiment du travail supplémentaire. Il faut juste plus de temps pour installer tous les paquets à nouveau.

Ce dernier bit est équivalent à ce qui est donné dans la question initiale en tant que solution. Je n’ai pas besoin de m’inquiéter pour obtenir la liste “installée” en premier.

Encore une fois, cela ne fonctionne pas sans problème si vous avez des paquets qui ne sont pas installés à partir de CRAN. Mais ce code est facilement extensible pour inclure ceux-là aussi.

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

C’est une vieille question bien sûr, mais il pourrait y avoir une nouvelle réponse facile (qui ne fonctionne que pour Windows), que je viens de trouver.

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

La meilleure façon d’y parvenir est le système RGui. Tous vos paquets seront transférés dans le nouveau dossier et les anciens seront supprimés ou enregistrés (vous pouvez choisir l’un ou l’autre). Ensuite, une fois que vous ouvrez à nouveau RStudio, il reconnaît immédiatement que vous utilisez une version mise à jour. Pour moi, cela a fonctionné comme un charme,

Plus d’infos sur {installr} ici .

Simon

Deux suggestions rapides:

  1. Utilisez les fichiers batch de Gabor, qui sont supposés comprendre des outils facilitant, par exemple, le déplacement de cette bibliothèque en bloc. Mise en garde: je ne les ai pas utilisées.

  2. N’installez pas de librairies dans le ‘filetree’ de la version R installée. Sous Windows, je peux mettre R dans la version C: / opt / R / R-$, mais placez toutes les bibliothèques dans C: / opt / R / library / en utilisant l’extrait suivant car cela atténue le problème:

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

La méthode proposé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 autre que CRAN.

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

  1. Installez R-2.11.0
  2. Copiez R-2.10.0/library/* vers R-2.11.0/library/
  3. Répondez “non” aux invites vous demandant si vous pouvez écraser.
  4. Démarrer R 2.11.0
  5. Exécutez la commande R update.packages()

En ce qui concerne la solution donnée dans la question, il peut ne pas être facile d’exécuter votre ancienne version de R si vous avez déjà installé la nouvelle version. Dans ce cas, vous pouvez toujours réinstaller tous les packages manquants de la version R précédente, comme suit.

 # Get names of packages in previous R version old.packages < - list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library") # Install packages in the previous version. # For each package p in previous version... for (p in old.packages) { # ... Only if p is not already installed if (!(p %in% installed.packages()[,"Package"])) { # Install p install.packages(p) } } 

(Notez que l'argument de list.files() dans la première ligne de code doit être le chemin d'access au répertoire de la bibliothèque pour votre version R précédente, où tous les dossiers de packages de la version précédente sont. Dans mon cas actuel, c'est "/Library/Frameworks/R.framework/Versions/3.2/Resources/library" . Cela sera différent si votre version précédente de R n'est pas 3.2 ou si vous êtes sous Windows.)

L'instruction if s'assure qu'un paquet n'est pas installé si

  • Il est déjà installé dans la nouvelle version R ou
  • A été installé en tant que dépendance à partir d'un package installé dans une itération précédente de la boucle for .

Suite à la suggestion de Dirk, voici un code R pour le faire sur Windows: Comment mettre facilement à niveau 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 de mise à niveau de R sur Windows 7

Deux options:

  1. Implémenter ma réponse ici
  2. Si vous utilisez R sous Eclipse avec StatET, ouvrez Configurations d’exécution, cliquez sur l’onglet Console et dans la boîte appelée R extrait de code exécuté après le démarrage, ajoutez cette ligne avec le répertoire de votre choix: .libPaths("C:/R/library")

Je suis sur Windows 8 et pour une raison étrange, je ne peux jamais installer de paquets en utilisant mes connexions Internet.

Je l’installe généralement en utilisant le fichier .zip de CRAN.

Après je suis passé de R 3.2.5 à R 3.3.1.

J’ai simplement copié les paquets de

C:\Path\to\packa\R\win-library\3.2 vers C:\Path\to\packa\R\win-library\3.3 .

Et puis j’ai redémarré la session R. Travaillé parfaitement Je n’ai pas vérifié si TOUS les paquets fonctionnent bien. Mais, ceux que j’ai vérifiés fonctionnent parfaitement bien. J’espère que ce hack fonctionne pour tout le monde.

À votre santé.

La réponse acceptée peut fonctionner si vous avez de la prévoyance, mais je m’étais déjà débarrassé de l’ancienne version, donc je n’ai pas pu suivre ces instructions. Les étapes décrites ci-dessous ont fonctionné pour la mise à niveau d’OSX depuis 2.1 et 3.1.

MISE À JOUR: Pour obtenir le répertoire de votre dernière version (au lieu de taper 3.1 ou 3.2), vous pouvez utiliser les commandes ci-dessous. Le second est converti directement en variable R, en sautant . et .. et .DS_Store , utilisez:

 OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/ echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/" 

Puis, dans R, vous pouvez coller la variable générée (append |pbcopy à la fin pour la copier directement. Une fois définie dans la nouvelle version de R, vous pouvez parcourir les packages installés à partir des instructions ci-dessus …

 for (p in setdiff(packages, installed.packages()[,"Package"])) install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE) 

pour moi cette page est bonne https://www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/ ou une autre option est juste d’installer le nouveau option et au final vous mettez, par exemple dans windows dans mon pc

.libPaths (c (“D: /Documents/R/win-library/3.2”, “C: / Program Files / R / R-3.2.3 / bibliothèque”, “C: / Program Files / R / R-3.2 .0 / library “,” D: /Documents/R/win-library/2.15 “)

chaque chemin de la dernière version dans mon cas, je mets toujours le premier chemin est “D: /Documents/R/win-library/3.2” qui est fixe et puis je mets l’autre parce que vous n’avez pas besoin de copier ou de déplacer des paquets, dans mon sugest appelle juste ça