Solución:
La solución adecuada es establecer la variable de entorno R_LIBS_USER
al valor de la ruta del archivo a la carpeta de la biblioteca deseada en lugar de hacer que RStudio reconozca un archivo Rprofile.site.
Para establecer la variable de entorno R_LIBS_USER
en Windows, vaya al Panel de control (Propiedades del sistema -> Propiedades avanzadas del sistema -> Variables de entorno -> Variables de usuario) a un valor deseado (la ruta a la carpeta de su biblioteca), por ejemplo
Variable name: R_LIBS_USER
Variable value: C:/software/Rpackages
Si por alguna razón no tiene acceso al panel de control, puede intentar ejecutar rundll32 sysdm.cpl,EditEnvironmentVariables
desde la línea de comando en Windows y agregue la variable de entorno desde allí.
La configuración de R_LIBS_USER asegurará que la biblioteca aparezca primero en .libPaths () independientemente de iniciar RStudio directamente o al hacer clic con el botón derecho en un archivo y “Abrir con” para iniciar RStudio.
La solución Rprofile puede funcionar si RStudio siempre se inicia haciendo clic en el acceso directo de RStudio. En este caso, establecer el directorio de trabajo predeterminado en el directorio que alberga su Rprofile será suficiente. La solución Rprofile no funciona cuando se hace clic en un archivo para iniciar RStudio porque eso cambia el directorio de trabajo fuera del directorio de trabajo predeterminado.
Por lo general, trato de mantener todos mis paquetes en una biblioteca, pero si desea agregar una biblioteca, ¿por qué no agregar la nueva biblioteca (que ya debe existir en su sistema de archivos) a la ruta de la biblioteca existente?
.libPaths( c( .libPaths(), "~/userLibrary") )
# obviously this would need to be a valid file directory in your OS
# min just happened to be on a Mac that day
O (y esto hará que userLibrary sea el primer lugar para colocar nuevos paquetes):
.libPaths( c( "~/userLibrary" , .libPaths() ) )
Luego obtengo (al menos cuando escribí esto originalmente):
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"
los .libPaths
La función es un poco diferente a la mayoría de las otras funciones no gráficas. Funciona a través de efectos secundarios. Las funciones Sys.getenv
y Sys.setenv
que informan y alteran las variables de entorno R se han dividido, pero .libPaths
puede informar o alterar su objetivo.
La información sobre el proceso de inicio de R se puede leer en ?Startup
página de ayuda y hay material de RStudio en: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio
En su caso, parece que RStudio no está respetando la configuración de Rprofile.site o quizás los está anulando al leer una configuración .Rprofile de uno de los valores predeterminados de RStudio. También debe mencionarse que el resultado de esta operación también agrega el contenido de las llamadas a .Library
y .Library.site
, que es otra razón por la que un R alojado en RStudio (o cualquier otro IDE o red instalado) podría mostrar un comportamiento diferente.
Ya que Sys.getenv()
devuelve el entorno del sistema actual para el proceso R, puede ver la biblioteca y otras rutas con:
Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]
Los dos que importan para almacenar y acceder a paquetes son (ahora diferentes en una caja de Linux):
R_LIBS_SITE /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/
Logré resolver el problema colocando el código en el .Rprofile
archivo en el directorio de trabajo predeterminado.
Primero, encontré la ubicación del directorio de trabajo predeterminado
> getwd()
[1] "C:/Users/me/Documents"
Luego utilicé un editor de texto para escribir un sencillo .Rprofile
archivo con la siguiente línea en él
.libPaths("C:/software/Rpackages")
Finalmente, cuando empiezo R
y correr .libPaths()
Obtengo la salida deseada:
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"