for - r project itam
MigraciĆ³n de bibliotecas R (1)
La opción # 3 (copiar la biblioteca antigua a la nueva biblioteca) debería funcionar ... pero si y solo si ejecuta:
update.packages(checkBuilt=TRUE)
De esta manera, los paquetes que deben reconstruirse para nuevas versiones se actualizarán. Es frecuente que las nuevas versiones agreguen requisitos (como el requisito inminente en 2.14.x para NAMESPACEs).
Editar: Ver esto es simplemente moverse alrededor de las tumbonas ... Voy a retirarme de aprobar el # 3 si está moviendo cualquiera de las instalaciones de la base R. Me ha funcionado en una Mac, pero no he visto ninguna promesa en la Guía de administración e instalación de R o en las Preguntas frecuentes sobre R de que debería funcionar. Puede lograr el número 1 (que probablemente sea el más seguro en varias condiciones) mediante esta secuencia:
# In original installation, get the non-default package list:
save.pkg.list <- installed.packages()[is.na(installed.packages()[ , "Priority"]), 1]
save(save.pkg.list, file="pkglist.Rdata")
# If you want to use remove.packages() at this point it''s fine.
# Or just delete their directories.
Con una versión recién instalada de R con las .Libpaths configuradas según sus preferencias (o incluso la misma instalación anterior):
load("pkglist.Rdata")
install.packages(save.pkg.list)
El simple hecho de mover los paquetes a una nueva biblioteca si no se cambiaron los ejecutables de R podría tener éxito (suponiendo que usted también cambie los .Libpaths) pero no tengo una instalación de Linux para probarlo o saber cómo se verían afectados los punteros establecidos por las operaciones de configuración.
Me gustaría mover varias bibliotecas R (*) de una unidad a otra, en Linux, y me gustaría saber si un movimiento simple es viable y seguro o si debo desinstalar y reinstalar los paquetes. Me doy cuenta de que las ubicaciones de las bibliotecas se identifican a través de .libPaths()
y he .libPaths()
manual "R Installation and Administration" para obtener información sobre la migración de bibliotecas, pero no veo un proceso recomendado.
Percibo tres opciones:
- Ejecute
remove.packages()
para todos los paquetes que no sean de base, e instale de nuevo a través deinstall.packages(lib = "/path/to/new/location")
. - Mueva las bibliotecas (directorios) usando
mv
y use enlaces simbólicos para apuntar a las nuevas ubicaciones (y eventualmente elimine el enlace simbólico) - Use el comando
mv
en Linux para mover los directorios al por mayor y actualizar.Library.site
enR_HOME/etc/Rprofile.site
, como se sugiere en el Manual de instalación y administración de R
La opción # 1 es contundente. La opción # 2 debería funcionar, pero parece un poco defectuosa.
¿Es seguro # 3 o hay problemas serios con él? Los problemas que he identificado son: permisos de directorio y la posibilidad de que la configuración de cualquier paquete almacene rutas absolutas en lugar de rutas relativas (lo que parece poco sólido e innecesario).
Con respecto al almacenamiento de rutas absolutas, encontré que rJava
almacena la ubicación de R_HOME
en un archivo llamado run
. Esto no es un problema de biblioteca en sí mismo , pero es una indicación de un paquete (y un buen paquete) que guarda una copia privada de una ruta absoluta.
(*) Hay varias bibliotecas y muchas partituras de paquetes. Naturalmente, solo las bibliotecas (directorios) se mueven, pero los paquetes pueden verse afectados.
ACTUALIZACIÓN 1 / Aclaración: Solo para aclarar: solo estoy migrando bibliotecas, no cambiando la versión de R o las versiones de los paquetes. La actualización de R o los paquetes se puede hacer por separado, pero la pregunta es si mover las bibliotecas es factible o no. Parece que si es necesario actualizar o reinstalar todos los paquetes para asegurarse de que las cosas se instalen correctamente, entonces esa es una ruta más parecida a la opción # 1 que a la opción # 3.
ACTUALIZACIÓN 2: Las respuestas a otra publicación SO tienen algunas buenas ideas sobre cómo evitar este problema al actualizar. No estoy actualizando R, pero la sugerencia de Dirk Eddelbuettel de no instalar paquetes en el filetree de R es acertada.