Foro de debate

ejecutar scripts sin abrirlos

ejecutar scripts sin abrirlos

de Alba Victoria Olivares Nadal -
Número de respuestas: 3
Buenas,

Tengo un problemilla que no consigo resolver: tengo un script (llamémosle script1) en el que llamo a ciertas funciones (bastante largas) definidas en otros scripts (llamémosles scripts_auxiliares). Antes de poder ejecturar el script1, debo abrir y ejecutar de uno en uno todos los scripts_auxiliares, cosa que puede dar lugar a errores y además conlleva una pérdida de tiempo considerable.

Me gustaría saber si hay alguna manera de cargar/ejecutar los scripts_auxiliares sin necesidad de abrirlos y ejecutarlos manualmente de uno en uno, si están en la misma carpeta que script1 y establezco como directorio de R esa carpeta (he probado con source, sink...etc, pero creo que no valen para esto)

Agradezco cualquier sugerencia :). Gracias

Alba
En respuesta a Alba Victoria Olivares Nadal

Re: ejecutar scripts sin abrirlos

de Manuel Muñoz Márquez -
Hola Alba:

La instrucción source sirve para ejecutar un fichero con instrucciones de R. No hay nada que impida usar la instrucción source dentro de un fichero de instrucciones.

Por tanto, una solución podría ser:

>>>script1.R<<
source('script_auxiliar_1.R')
source('script_auxiliar_2.R')
...
Funciones del script1
>>>script1.R<<<

Si el script1 debe cargar otro fichero, pues se añade otra instrucción source dentro de script_auxiliar_1.R

Una solución más a largo plazo y más elaborada consiste en crear un paquete (aunque sea para uso personal) y cargarlo el paquete antes de ejecutar el script.

Si esto no resuelve tu problema, intenta proporcionar algún detalle más.

Saludos.


En respuesta a Manuel Muñoz Márquez

Re: ejecutar scripts sin abrirlos

de Yurena Hernández -
Y si sólo quisiera ejecutar de la línea 1 a la 60 del 'script_auxiliar_1.R'?
En respuesta a Yurena Hernández

Re: ejecutar scripts sin abrirlos

de Manuel Muñoz Márquez -

Buenas:

Bajo mi punto de vista lo mejor sería dividir el fichero en tantos como fuese necesarios y ejecutar el que corresponda.

Otra solución más elegante es que el fichero script_auxiliar_1.R contenga las definiciones de las funciones que se ejecutarían desde el programa principal. Podrías crear un único fichero auxiliar con la definición de todas las funciones y, tras cargarlo, llamar a las que corresponda.

Un saludo.