2016-08-09 6 views
-1

Ich habe ein Skript erstellt, das funktioniert, wenn ich es von Rstudio ausführen.R ausführbare Datei funktioniert nicht, aber Skript funktioniert gut

Wenn ich es jedoch als "Rexec" speichern und versuchen, es durch Doppelklicken auszuführen, wird es nur teilweise gestartet.

Ich bekomme ein Navigations-GUI-Pop-up zum ursprünglichen Speicherort der Datei, aber danach passiert nichts mehr. Die schwarze Box mit verschiedenen Nachrichten zeigt einige Schnellmeldungen an und schließt, bevor ich sehen kann, was passiert ist.

Ich habe ein anderes, viel größeres Skript auf diese Weise ausgeführt und hatte keine Probleme.

, dass dieses Skript unterscheidet sich, wenn ich es durch RStudio laufen, gibt es mehrere interaktive gui Dialog Pop-ups, die eine Eingabe erfordern von mir also Spaltenüberschriften mit select.list oder speichern Datei als png über Verwendung wählen:

png.filename <- tclvalue(tkgetSaveFile(initialfile = "choose name.png", 
             filetypes = "{ {PNG Files} {.png} }")) 

Wie kann ich überprüfen, was das Problem verursacht, dh ein Fehlerprotokoll ausgeben?

+0

'Wenn ich es als "Rexec" speichern Sie haben mich dort verloren. – Roland

+0

Entschuldigung für meine schlechte Post. Was ich meinte war, dass ich das R-Skript als "foo_script.Rexec" speichere. Ich kann diesen Dateityp dann wie folgt einer ausführbaren Datei zuordnen: http://www.r-datacollection.com/blog/Making-R-files-executable/. Das Starten des Skripts ist dann nur eine Frage des Doppelklicks auf "foo_script.Rexec". Bitte sehen Sie meine Bearbeitung, als ich Beispiele für die Erstellung von Fehlerprotokoll und dann, wie das Problem zu beheben gefunden. –

Antwort

0

Ich fand dieses Beispiel, wie Fehlerprotokoll zu erhalten: Output error/warning log (txt file) when running R script under command line.

Habe ich nur noch diese Zeilen zu meinem Code wie folgt:

zz <- file("error_log.text", open="wt") 
sink(zz, type="message") 

....code chunk.... 

sink(type="message") 
close(zz) 

Diese eine Textdatei in das Verzeichnis mit „foo_script.Rexec“ mit einigen Nachrichten schreibt, die Folgendes enthalten:

Error in select.list(names(MQ.file.DF), multiple = TRUE, title = "Choose variables to remove", : 
    select.list() cannot be used non-interactively 
Execution halted 

select.list() scheint das Problem zu sein, daher der Prozess abstürzt.

Work around - Ich wechselte zu tk_select.list und das scheint das Problem zu sortieren. Skript läuft ohne einen Absturz. Ich bevorzuge die Art select.list, da es das Klicken und Ziehen des Cursors unterstützt, um mehrere Spalten zu markieren, während Sie mit tk_select.list immer nur eins anklicken müssen. Ich werde ein paar Klicks mehr machen, solange es in Ordnung ist. Ich hoffe, das hilft jemandem mit einem ähnlichen Problem.

+0

Es ist besser, Ihre Änderungen in die Antwort hier zu kopieren, anstatt auf sie in Ihrer Frage zu verweisen. –

+0

Hallo Paul, ok wird das nächste Mal tun. –

Verwandte Themen