¿Cómo puedo interrumpir un código en ejecución en R con un comando de teclado?

82

¿Alguien puede decir cómo puedo interrumpir un script en ejecución en R?

Digamos que tengo un bucle infinito o algún otro problema y quiero detener la ejecución del script. ¿Hay algún comando de teclado que haga eso?

Si ayuda a alguno, en Python es Ctrl + c. Intenté eso en R, y no funcionó :).

Hice una búsqueda para esta pregunta aparentemente simple, pero no pude encontrar la respuesta.

Gracias por adelantado.

Akavall
fuente
4
En Rgui, si la consola R tiene el foco, entonces ESC o Alt-M [Enter] o al hacer clic en el octágono de parada roja detendrá el cálculo actual
Henry
1
Creo que también depende de qué sistema operativo estás usando (Wondows, Mac OS, Linux) y cómo estás ejecutando tu script R (desde R gui, Emacs, ...).
Manuel Ramón
6
ESC también funciona en R Studio (al menos cuando se ejecuta Windows).
Capitán Murphy
2
Deberías haber mencionado que estaban en Windows en tu publicación original. Intente mencionar toda la información relevante. También debería haber mencionado como está ejecutando R.
Xu Wang

Respuestas:

63

Respuesta propia (prácticamente resumen de los comentarios y respuestas de otros):

  • En RStudio, Escfunciona, en Windows, Mac y ubuntu (y supongo que también en otras distribuciones de Linux).

  • Si el proceso se ejecuta en, por ejemplo, ubuntu shell (y esto no es Respecífico), por ejemplo, usando:

    Rscript my_file.R
    

    Ctrl + c mata el proceso

    Ctrl + z suspende el proceso

  • Dentro del caparazón R, las Ctrl + Cmuertes te ayudan a escapar

Akavall
fuente
17
Desafortunadamente, en RStudio, Escno se pueden interrumpir los procesos que consumen mucha memoria.
Orión
14

Control-C funciona, aunque dependiendo de lo que esté haciendo el proceso, es posible que no se lleve de inmediato.

Si está en un sistema basado en Unix, una cosa que hago es controlar-z para volver al indicador de línea de comando y luego emitir un 'kill' al ID del proceso.

geoffjentry
fuente
6

Pruebe Ctrl + z Pero matará el proceso, no lo suspenderá.

Bhushan
fuente
3
Probé Ctrl + z, pero tampoco funciona. Estoy en Windows, por cierto. Pero gracias.
Akavall
Sí, esto no es una interrupción del teclado, también podría cerrar la ventana de la terminal
altabq
1

Sé que esto es antiguo, pero me encontré con el mismo problema. Estoy en una Mac / Ubuntu y voy y vengo. Lo que he descubierto es que el simple hecho de enviar una simple señal de interrupción al proceso principal de R hace exactamente lo que está buscando. Ejecuté scripts que duraron hasta 24 horas y la interrupción de la señal funciona muy bien. Debería poder ejecutar kill en la terminal:

$ kill -2 pid

Puedes encontrar el pid ejecutando

$ps aux | grep exec/R

No estoy seguro de Windows ya que nunca estoy allí, pero no puedo imaginar que no haya una opción para hacer esto también en el símbolo del sistema / Administrador de tareas

¡Espero que esto ayude!

Mgarvey
fuente