94 votes

Comment interrompre un code en cours d'exécution dans R à l'aide d'une commande clavier ?

Comment interrompre un script en cours d'exécution dans R ?

Disons que j'ai une boucle infinie ou un autre problème, et que je veux arrêter l'exécution du script. Existe-t-il une commande clavier qui permette de le faire ?

Si cela peut vous aider, en Python, c'est Ctrl + c. J'ai essayé cela en R, et cela n'a pas fonctionné.

4 votes

Dans Rgui, si la console R est au centre de l'attention, ESC ou Alt-M [Enter] ou un clic sur l'octogone rouge d'arrêt arrêtera le calcul en cours.

1 votes

Je pense que cela dépend aussi du système d'exploitation que vous utilisez (Windows, Mac OS, Linux) et de la façon dont vous exécutez votre script R (à partir de l'interface R, d'Emacs, ...).

6 votes

ESC fonctionne également dans R Studio (sous Windows, du moins).

73voto

Akavall Points 7357

Self Answer (résumé des commentaires et réponses des autres) :

  • En RStudio , Esc fonctionne sous Windows, Mac et ubuntu (et je suppose que c'est aussi le cas pour d'autres distributions Linux).

  • Si le processus est exécuté dans un shell ubuntu par exemple (et ce n'est pas le cas), le processus est exécuté dans un shell ubuntu. R spécifique), par exemple en utilisant :

      Rscript my_file.R

    Ctrl + c met fin au processus

    Ctrl + z suspend le processus

  • Dans la coquille R, Ctrl + C tue vous aide à y échapper

14voto

geoffjentry Points 2151

Control-C fonctionne, bien que selon ce que fait le processus, cela peut ne pas prendre tout de suite.

Si vous êtes sur un système basé sur Unix, une chose que je fais est de contrôler-z pour revenir à l'invite de ligne de commande, puis d'émettre un "kill" à l'ID de processus.

6voto

Bhushan Points 3461

Essayez Ctrl + z Mais cela va tuer le processus, pas le suspendre.

3 votes

J'ai essayé Ctrl + z, mais cela ne fonctionne pas non plus. Je suis sous Windows. Merci quand même.

0 votes

Oui, ce n'est pas une interruption de clavier, on pourrait aussi bien fermer la fenêtre du terminal.

3voto

Mgarvey Points 91

Je sais que c'est une vieille histoire, mais j'ai rencontré le même problème. Je suis sur un Mac/Ubuntu et je passe d'un côté à l'autre. Ce que j'ai trouvé, c'est qu'envoyer un simple signal d'interruption au processus principal de R fait exactement ce que vous recherchez. J'ai exécuté des scripts qui ont duré jusqu'à 24 heures et le signal d'interruption fonctionne très bien. Vous devriez pouvoir lancer kill dans le terminal :

$ kill -2 pid

Vous pouvez trouver le pid en exécutant

$ps aux | grep exec/R

Je ne suis pas sûr pour Windows car je n'y suis jamais, mais je ne peux pas imaginer qu'il n'y ait pas une option pour faire cela aussi dans l'Invite de commande/Gestionnaire de tâches.

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X