2010-10-19 22 views
45

Recentemente ho installato R-2.12.0 da R-2.11.1 e ho aggiornato tutti i pacchetti CRAN via:aggiornare automaticamente i pacchetti installati da R-forgiare

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

Ora voglio aggiornare tutti i pacchetti Ho installato da R-forge, ma solo se non sono disponibili su CRAN. In altre parole, non riesco a eseguire semplicemente:

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

perché sarebbe installare la versione R-fucina del pacchetto di survival rispetto alla versione fornita con R-2.12.0.

Probabilmente potrei usare una combinazione delle informazioni da old.packages e packageStatus per determinare quali pacchetti esistono solo su R-forge, ma volevo chiedere se esistesse un modo più semplice prima di creare una soluzione personalizzata.

risposta

47

ne dite di questo:

# 1. Get the list of packages you have installed, 
# use priority to exclude base and recommended packages. 
# that may have been distributed 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? 
+0

Su Mac uso type = "fonte" nell'ultimo passaggio: per esempio update.packages (checkBuilt = TRUE, ask = FALSE, repos = "http://r-forge.r-project.org", oldPkgs = pkgsToUp, type = "source") – Janvb

Problemi correlati