Pour être complet, il existe des moyens de vous éviter d'avoir ce problème. Comme Dirk l'a dit, enregistrez vos packages dans un autre répertoire de votre ordinateur.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
Vous pouvez modifier la valeur par défaut .Library
valeur à l' aide de la fonction .libPaths
trop
.libPaths("/path/to/directory/with/libraries")
Cela mettra ce chemin comme première valeur dans la .Library
variable, 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 version R. Ensuite, il se chargera automatiquement à chaque chargement de R, et vous n'avez plus à vous en soucier. Vous pouvez simplement installer et charger des packages à partir du répertoire spécifié.
Enfin, j'ai un petit code inclus dans mon Rprofile.site me permettant de réinstaller tous les packages lorsque j'installe une nouvelle version R. Il vous suffit de les lister avant de passer à la nouvelle version R. Je le fais en utilisant un fichier .RData contenant une liste mise à jour avec tous les packages.
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 crée le packagelist.RData en spécifiant .Last()
dans mon Rprofile.site. Cela met à jour la liste des packages 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 quand même ajuster le Rprofile.site (en utilisant des contrastes de somme, en ajoutant le code supplémentaire pour Tinn-R, ces choses), donc ce n'est pas vraiment un travail supplémentaire. La réinstallation de tous les packages prend juste plus de temps.
Ce dernier bit est équivalent à ce qui est donné dans la question d'origine comme solution. Je n'ai simplement pas besoin de m'inquiéter d'avoir la liste «installée» en premier.
Encore une fois, cela ne fonctionne pas parfaitement si vous avez des packages qui ne sont pas installés à partir de CRAN. Mais ce code est facilement extensible pour inclure ceux-là aussi.