sirven - Actualiza automáticamente paquetes instalados desde R-forge
para que sirven los paquetes en r (1)
Recientemente instalé R-2.12.0 desde R-2.11.1 y actualicé todos los paquetes de CRAN a través de:
update.packages(checkBuilt=TRUE, ask=FALSE)
Ahora quiero actualizar todos los paquetes que he instalado desde R-forge, pero solo si no están disponibles en CRAN . En otras palabras, no puedo simplemente ejecutar:
update.packages(checkBuilt=TRUE, ask=FALSE, repos="http://r-forge.r-project.org")
porque instalaría la versión R-forge del paquete de survival
sobre la versión que venía con R-2.12.0.
Probablemente podría utilizar alguna combinación de la información de old.packages
y packageStatus
para determinar qué paquetes existen solo en R-forge, pero quería preguntar si había una manera más fácil antes de construir una solución personalizada.
Qué tal esto:
# 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?