Mettre à jour automatiquement les packages installés à partir de R-forge

J’ai récemment installé R-2.12.0 à partir de R-2.11.1 et j’ai mis à jour tous les packages CRAN via:

update.packages(checkBuilt=TRUE, ask=FALSE) 

Maintenant, je veux mettre à jour tous les paquets que j’ai installés depuis R-forge, mais uniquement s’ils ne sont pas disponibles sur CRAN . En d’autres termes, je ne peux pas simplement exécuter:

 update.packages(checkBuilt=TRUE, ask=FALSE, repos="http://r-forge.r-project.org") 

car il installerait la version R-forge du paquet de survival sur la version fournie avec R-2.12.0.

Je pourrais probablement utiliser une combinaison des informations contenues dans old.packages et packageStatus pour déterminer quels paquets existent uniquement sur R-forge, mais je voulais demander s’il existait un moyen plus simple avant de créer une solution personnalisée.

    Que dis-tu de ça:

     # 1. Get the list of packages you have installed, # use priority to exclude base and recommended packages. # that may have been dissortingbuted with R. pkgList <- installed.packages(priority='NA')[,'Package'] # 2. Find out which packages are on CRAN and R-Forge. Because # of R-Forge build capacity is currently limiting the number of # binaries available, it is queried for source packages only. CRANpkgs <- available.packages( contriburl=contrib.url('http://cran.r-project.org'))[,'Package'] forgePkgs <- available.packages( contriburl=contrib.url('http://r-forge.r-project.org', type='source') )[,'Package'] # 3. Calculate the set of packages which are installed on your machine, # not on CRAN but also present on R-Force. pkgsToUp <- intersect(setdiff(pkgList, CRANpkgs), forgePkgs) # 4. Update the packages, using oldPkgs to restrict the list considered. update.packages(checkBuilt=TRUE, ask=FALSE, repos="http://r-forge.r-project.org", oldPkgs=pkgsToUp) # 5. Profit?