2012-04-24 15 views
44

¿Podría sugerirme una forma de cargar paquetes en R automáticamente? Quiero decir, quiero comenzar una sesión en R sin necesidad de usar library('package name') varias veces. Supongamos que he descargado todos los paquetes que querrá usar la próxima vez que se inicia R.¿Cómo cargar paquetes en R automáticamente?

+6

Normalmente esto no es una buena idea porque hace que todo el código siguiente en la sesión depende de su configuración, mientras que si tenía las llamadas a las bibliotecas en que entonces sería más auto-contenida. Si intentas compartir tu código con otros, no estarán muy contentos contigo, ya que no podrán ejecutar tus scripts sin instrucciones adicionales. –

+1

Podría definir una función 'load_extra_packages()' en su archivo '.Rprofile' /' Rprofile.site' que cargó todos los paquetes que deseaba (e imprimió sus nombres), luego ejecuta ese comando al comienzo de sus sesiones - eso haría que tu código sea transparente, si no completamente independiente ... –

Respuesta

63

Ponga library(foo) en su archivo o conjunto .RprofileR_DEFAULT_PACKAGES: ver ?Rprofile ...

En particular (porque ?Rprofile es larga y potencialmente intimidante):

If you want a different set of packages than the default ones when you start, insert a call to ‘options’ in the ‘.Rprofile’ or ‘Rprofile.site’ file. For example, ‘options(defaultPackages = character())’ will attach no extra packages on startup (only the ‘base’ package) (or set ‘R_DEFAULT_PACKAGES=NULL’ as an environment variable before running R). Using ‘options(defaultPackages = "")’ or ‘R_DEFAULT_PACKAGES=""’ enforces the R system default.

Dado que es probable hace quieren todos los paquetes predeterminados cargados, y luego los extras, además (en lugar de, digamos, no cargar algunos de los paquetes por defecto), puede EIT la puso

library("mypackage1") 
library("mypackage2") 
[etc.] 

o el uso de options(defaultPackages=...):

options(defaultPackages=c(getOption("defaultPackages"), 
     "mypackage1","mypackage2", ... [etc.])) 

en sus .Rprofile a append sus paquetes deseados a los valores predeterminados estándar.

edición (copiado de comentario) está consiguiendo que esto funcione en Rstudio: http://rstudio.org/docs/using/workspaces sugiere que rstudio ejecuta .Rprofile y luego "realiza las otras acciones que se describen en I inicio [http://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html]" (que es el mismo que ?Rprofile) . Es ambiguo si se ve Rprofile.site o no.

editar # 2: según el comentario a continuación, funciona con una versión reciente de Rstudio.

+2

+1 para 'porque'? Rprofile' es largo y potencialmente intimidante '. Es eso, y también una pieza de documentación terriblemente compacta * y * completa. Definitivamente lectura recomendada. –

+0

Gracias @Ben Bolker Intenté agregar esta línea 'library (foo)' en el archivo 'Rprofile.site' y no obtengo lo que quiero. ¿Qué quieres decir con 'foo'? ¿Que es eso? ¿Se supone que es un nombre para un paquete determinado que quiero cargar? – Nestorghh

+3

lo siento; 'foo' es una variable antigua de" marcador de posición ". Por ejemplo, puede probar 'library (" ggplot2 "); biblioteca ("emdbook"); biblioteca ("quantreg"); library ("rms") '(como ejemplos de algunos paquetes reales que puede querer incluir). –

15

hay un archivo llamado .Rprofile que no es más que una secuencia de comandos que se ejecuta cada vez que se inicia una nueva sesión de R.

Lo que hay que hacer es añadir library(package) a ella. Si está usando Unix, probablemente esté en su carpeta de inicio como un archivo oculto.

7

Quick-R page on customizing R startup contiene básicamente la misma información que en las respuestas de Ben y Joao, pero es quizás un poco más clara. Crear una copia de Rprofile.site archivo con los cambios deseados en la carpeta de inicio (Documentos en Windows) y llamarlo .Rprofile

EDIT: Noté que R 3.0.0 no se ve desde la carpeta Documentos por más tiempo, sino que utiliza el hogar del usuario directorio (nombre de usuario) en Windows 7. Sin embargo, esto podría ser un problema de instalación (es decir, que casualmente instalé R "incorrectamente"). Sin embargo, la página Quick-R vinculada en esta respuesta indica la forma correcta de hacerlo. Si alguien más encuentra este problema, la solución es copiar .Rprofile en el directorio de inicio del usuario.

0

La respuesta rápida es que debe colocar sus paquetes R en el archivo .Rprofile, como todos sugirieron.

Sin embargo, tenga en cuenta que R leerá este archivo y y luego cargará los paquetes base R.Ver desde ?Startup:

Note that when the site and user profile files are sourced only the base package is loaded,

Esto puede causar problemas si el paquete que desea cargar realza/sobrescribir algunas funciones de base R. Véase, por ejemplo, con tidyverse :: filtro: https://github.com/tidyverse/dplyr/issues/1611

veo dos soluciones hasta ahora:

  1. Uso .First.sys() en la primera línea del archivo .Rprofile: Este es el comando que normalmente se ejecuta después de la lectura el .Rprofile, que carga los paquetes en getOption("defaultPackages").

  2. actualización de la opción defaultPackages: no utilizan library() en su .Rprofile, pero algo así.

    old <- getOption("defaultPackages") 
    options(defaultPackages = c(old, "tidyverse")) 
    
Cuestiones relacionadas