Pregunta

Sé que debo estar haciendo un simple error de sintaxis, pero yo quiero tener un archivo por lotes ventanas que dispara hasta 9 casos de R y ejecuta una rutina diferente en cada uno. Quiero que estos puedan funcionar simultáneamente (es decir, de forma asíncrona). Puedo disparar hasta 9 ventanas de símbolo del sistema y escriba un comando en cada uno, pero parece que con el comando START I debería ser capaz de hacer que parten de un único archivo por lotes.

Aquí hay un ejemplo de cómo comienzo a una de las instancias de R:

"C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" 

La lectura de este pregunta stackOverflow anterior junto con esta pregunta anterior que me hace pensar que debería ser capaz de hacer esto:

START "" "C:\Program Files (x86)\R\R-2.8.1\bin\R" CMD BATCH "C:\Users\jd\Documents\mexico\Estado\getdata1.r" /b

que no devuelve un error, simplemente devuelve un aviso y R nunca comienza. ¿Qué me falta?

¿Fue útil?

Solución

Respuesta simple. En las ventanas cuando se ejecuta el uso de comandos "RCMD" no "R CMD". Hay un exe separado para ejecutar los comandos. Buscar en la carpeta bin de la instalación R.

Otros consejos

Me gustaría hacer dos cosas de manera diferente:

  1. Uso sí R para despachar nueve puestos de trabajo diferentes; la paquete de nieve es muy bueno en esto, incluso cuando no utilice MPI / PVM / NWS para el trabajo distribuida. Algunos ejemplos de uso de la nieve son por ejemplo en mi 'introducción a la computación de alto rendimiento con R' tutoriales enlaces desde esta página . Con la nieve, se obtiene versiones 'paralelo' de las funciones de aplicación que se pueden ejecutar a través de múltiples instancias de R que se ejecutan en el equipo local (o, por supuesto, una red de ordenadores, si tiene uno). La lista r-sig-HPC es de gran ayuda para las preguntas más detalladas.

  2. cambiar al uso de Rscript.exe en lugar de utilizar 'R CMD BATCH'. En Linux / OS X también se obtiene una opción de usar más pequeño

Dicho esto, corro casi todos mis trabajos en Linux por lo que puede ser una respuesta específica de Windows también aquí que yo no sé. Pero lo anterior es genérico y se queda en el espíritu independiente de la plataforma de la I.

No estaba inmediatamente claro a partir de las otras respuestas cómo realmente hacer este trabajo (sin recurrir a alternativas de procesamiento en paralelo, por lo que aquí hay una solución que encontré que funciona de manera muy sencilla en las ventanas

Si usted tiene un archivo r simple:

for(i in 1:10){
  ptm0 <- proc.time()
  Sys.sleep(0.5)  
  ptm1=proc.time() - ptm0
  jnk=as.numeric(ptm1[3])
  cat('\n','It took ', jnk, "seconds to do iteration", i)
}

El CMD, especifique el directorio de donde su guión es y luego empezar una nueva ventana con RSCRIPT para ejecutar el código. Varias líneas se abrirán varias instancias r que se ejecutan su código, que también reproduce los mensajes que las salidas de código.

cd "C:\rcode"
START "" Rscript example_code.r /b
START "" Rscript example_code.r /b

Si RSCRIPT no está en la ruta del sistema, basta con especificar la ruta completa en su lugar:

START "" "C:\Program Files\R\bin\x64\Rscript.exe" text_within_loop.r /b
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top