ticks mtext r

mtext - ¿Dónde en R almaceno permanentemente mis funciones personalizadas?



text in r (5)

Tengo varias funciones personalizadas que uso con frecuencia en R. En lugar de presentar este archivo (o partes de él) en cada script, ¿hay alguna forma de agregarlo a un archivo base R de modo que siempre estén disponibles cuando uso R?


La respuesta aceptada es la mejor a largo plazo: hacer un paquete.

Afortunadamente, la curva de aprendizaje para hacer esto se ha reducido drásticamente con el paquete devtools : automatiza la creación de paquetes (una buena ayuda para comenzar con el pie derecho), fomenta las buenas prácticas (como documentar con roxygen2 y ayuda con el control de versiones en línea) (bitbucket, github u otro), compartiendo su paquete con otros. También es muy útil para allanar su camino a la presentación de CRAN.

Buena documentación en http://adv-r.had.co.nz y http://r-pkgs.had.co.nz .

para crear su paquete , por ejemplo, usted puede:

install.packages("devtools") devtools::create("path/to/package/pkgname")


Otra opción es usar el archivo .Rprofile . Puedes leer sobre los detalles en ?Startup . Básicamente, la idea es que:

... se busca un archivo llamado ''.Rprofile'' en el directorio actual o en el directorio de inicio del usuario (en ese orden). El archivo de perfil de usuario se obtiene en el área de trabajo.

Puede leer here sobre cuántas personas usan esta funcionalidad.


Sí, crear un paquete. Hay numerosos tutoriales, así como el manual de Writing R Extensions que vino con su copia de R.

Puede parecer demasiado trabajo al principio, pero probablemente te alegrarás de haberlo hecho a largo plazo.

PS Y luego puedes cargar ese paquete desde ~/.Rprofile . Para código realmente corto, también puedes definirlo allí.


También puede mirar el paquete ''mvbutils'': le permite configurar un conjunto jerárquico de "tareas" (carpetas con archivos de espacio de trabajo ".RData" en ellas) de manera que siempre pueda ver qué hay en las tareas ancestrales (es decir, los ancestros). Están en la ruta de búsqueda (). Por lo tanto, puede poner sus funciones personalizadas en la "tarea de inicio", donde siempre inicia R; y luego cambia a cualquier tarea específica del proyecto que requiera, por lo que puede evitar espacios de trabajo desordenados, pero aún podrá usar (y editar) sus funciones personalizadas porque la tarea inicial siempre es ancestral. Los objetos (incluidas las funciones) se almacenan en archivos ".RData" y, por lo tanto, se cargan / guardan automáticamente, pero existen funciones de copia de seguridad de texto separadas para las funciones.

Hay muchas formas diferentes de trabajar en R, y no hay una mejor solución para todos los gustos. Tampoco es fácil encontrar un resumen! Hablando solo para mí:

  • No soy un fan de tener que ''fuente'' todo en cada momento; Por un lado, simplemente no funciona con grandes conjuntos de datos y / o resultados de ejecuciones del modelo.

  • Creo que los paquetes son difíciles de crear y mantener; Hay una sobrecarga realmente significativa. Después de los primeros 5 paquetes que escribes, se vuelve un poco más fácil si lo haces por lo menos una vez a la semana para que no olvides cómo, pero realmente ...

De hecho, ''mvbutils'' también tiene un montón de herramientas para facilitar la creación y (especialmente) el mantenimiento de paquetes, diseñados para interactuar sin problemas con el sistema de jerarquía de tareas. Utilizo y edito mis propios paquetes todo el tiempo (incluida la edición de mvbutils); pero si no fuera por las herramientas en ''mvbutils'', estaría moliendo mis dientes con frustración la mayoría de los días de la semana.


Un paquete puede ser excesivo para algunas funciones útiles. Yo diría que no hay nada de malo en el source() explícito de la source() a medida que los necesita, al menos es explícito, de modo que si envía un correo electrónico a alguien con su código, no se olvidará de incluir esos otros scripts.