Wie kann ich einen laufenden Code in R mit einem Tastaturbefehl unterbrechen?


82

Kann jemand sagen, wie ich ein laufendes Skript in R unterbrechen kann?

Angenommen, ich habe eine Endlosschleife oder ein anderes Problem und möchte verhindern, dass das Skript ausgeführt wird. Gibt es einen Tastaturbefehl, der das macht?

Wenn es hilft, ist es in Python Strg + c. Ich habe das in R versucht und es hat nicht funktioniert :).

Ich habe nach dieser scheinbar einfachen Frage gesucht, konnte aber keine Antwort finden.

Danke im Voraus.


4
Wenn in Rgui die R-Konsole den Fokus hat, stoppt ESC oder Alt-M [Enter] oder das Klicken auf das rote Stopp-Achteck die aktuelle Berechnung
Henry

1
Ich denke, es hängt auch davon ab, welches Betriebssystem Sie verwenden (Wondows, Mac OS, Linux) und wie Sie Ihr R-Skript ausführen (von R gui, Emacs, ...).
Manuel Ramón

6
ESC funktioniert auch in R Studio (zumindest unter Windows).
Kapitän Murphy

2
Sie sollten erwähnt haben, dass unter Windows in Ihrem ursprünglichen Beitrag waren. Versuchen Sie, alle relevanten Informationen zu erwähnen. Sie sollten auch erwähnt haben, wie Sie R.
Xu Wang

Antworten:


63

Selbstantwort (ziemlich genau Zusammenfassung der Kommentare und Antworten anderer):

  • In RStudio, EscArbeiten auf Windows, Mac und Ubuntu (und ich würde auch auf anderen Linux - Distributionen erraten).

  • Wenn der Prozess beispielsweise in der Ubuntu-Shell ausgeführt wird (und dies ist nicht Rspezifisch), verwenden Sie beispielsweise:

    Rscript my_file.R
    

    Ctrl + c beendet den Prozess

    Ctrl + z setzt den Prozess aus

  • In der R-Shell Ctrl + Chelfen Kills dabei, ihr zu entkommen


17
Leider kann RStudio Escspeicherintensive Prozesse nicht unterbrechen.
Orion

14

Control-C funktioniert, obwohl es je nach dem, was der Prozess tut, möglicherweise nicht sofort dauert.

Wenn Sie auf einem Unix-basierten System arbeiten, gehe ich mit control-z zur Eingabeaufforderung zurück und gebe der Prozess-ID einen "Kill" aus.


6

Probieren Sie Strg + z aus. Der Vorgang wird jedoch abgebrochen und nicht angehalten.


3
Ich habe Strg + z ausprobiert, aber es funktioniert auch nicht. Ich bin übrigens unter Windows. Trotzdem danke.
Akavall

Ja, dies ist kein Tastatur-Interrupt. Sie können auch das Terminalfenster schließen
altabq

2

Ich weiß, dass dies alt ist, aber ich bin auf dasselbe Problem gestoßen. Ich bin auf einem Mac / Ubuntu und wechsle hin und her. Was ich gefunden habe, ist, dass nur das Senden eines einfachen Interrupt-Signals an den Haupt-R-Prozess genau das tut, wonach Sie suchen. Ich habe Skripte ausgeführt, die bis zu 24 Stunden dauerten, und der Signalinterrupt funktioniert sehr gut. Sie sollten in der Lage sein, kill im Terminal auszuführen:

$ kill -2 pid

Sie können die PID finden, indem Sie laufen

$ps aux | grep exec/R

Ich bin mir bei Windows nicht sicher, da ich nie dort bin, aber ich kann mir nicht vorstellen, dass es keine Option gibt, dies auch in der Eingabeaufforderung / im Task-Manager zu tun

Hoffe das hilft!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.