r - img - tags$style shiny
R 2.14-detectar paquetes sin espacio de nombres (3)
Según el R News para v2.14:
Todos los paquetes deben tener un espacio de nombres, y uno se crea en la instalación si no se proporciona en las fuentes. Esto significa que cualquier paquete sin un espacio de nombres debe volver a instalarse bajo esta versión de R (pero los paquetes de solo datos sin el código R aún se pueden usar).
¿Cómo detecto programáticamente qué paquetes instalados en 2.13.x no tienen un espacio de nombres para saber qué debo actualizar?
Gran hilo. Yo estaba atrapado en el mismo problema. Para terminar todo lo que hay que hacer puedes:
remove.packages(names(pkgNS[!pkgNS]))
install.packages(names(pkgNS[!pkgNS]))
Solo corre :
update.packages(checkBuilt=TRUE)
La función packageHasNamespace
contiene la clave. Úsalo junto con los installed.packages
:
El siguiente código recorre todas las ubicaciones de la biblioteca en .libPaths
:
pkgNS <- NULL
for(i in seq_along(.libPaths())){
libLoc <- .libPaths()[i]
pkgs <- installed.packages(lib.loc=libLoc)[, 1]
pkgNS <- c(pkgNS,
sapply(unname(pkgs), packageHasNamespace, package.lib=libLoc)
)
}
El resultado de este código es un vector lógico denominado pkgNS
que es VERDADERO si el paquete tiene un espacio de nombres, FALSO si no lo tiene.
Para obtener solo los paquetes que no tienen un espacio de nombres, cree un subconjunto de pkgNS
donde pkgNS
es FALSO:
pkgNS[!pkgNS]
abind bitops CircStats combinat corpcor deldir
FALSE FALSE FALSE FALSE FALSE FALSE
Design evd financial fpc getopt gsubfn
FALSE FALSE FALSE FALSE FALSE FALSE
ineq magic mlbench optparse plotrix ppcor
FALSE FALSE FALSE FALSE FALSE FALSE