2017-11-19 5 views
0

Ich benutze die SvDialogs (eine R-Wrapper-Bibliothek für zenity), um GUI Pop-up-Boxen zu erstellen, und dies funktioniert einwandfrei, wenn ich den Code durch R Studio oder ausführen aus einer R-Terminal-Sitzung (unter Ubuntu 16.04).R Pop-up-Boxen funktionieren nicht, wenn im Terminal ausgeführt

Ein minimales Beispiel ist:

library(svDialogs) 
dlgMessage("Hello Stackoverflow!") 

Wenn ich jedoch den Code direkt über das Terminal ausgeführt ist es nicht funktioniert:

Rscript --vanilla -e 'source("path/to/file.R")' 

Das Terminal zeigt, dass die Bibliothek geladen wird, und nicht zeige eine Fehlermeldung an: aber das Popup erscheint nicht! Wenn ich nach dem Aufruf von dlgMessage eine zusätzliche Zeile hinzufüge, wird diese Zeile ausgeführt. das heißt, wenn ich den modifizierten Code

library(svDialogs) 
dlgMessage("Hello Stackoverflow!") 
print("Goodbye Stackoverflow!") 

dann die zweite Zeile in dem Anschlussfenster nicht zeigen laufen (d.h. der Code Absturz bei dlgMessage nicht).

Glücklich für Lösungen, die nicht auf dlgMessage angewiesen sind, wenn es einen Workarond gibt: Ich hatte zuvor versucht, Zenity nativ über R zu verwenden, indem ich system() verwendete, aber das konnte nicht funktionieren.

Antwort

0

R kann entweder im interaktiven oder im nicht interaktiven Modus ausgeführt werden. Der Standardwert hängt davon ab, ob ein menschlicher Bediener vorhanden ist oder nicht, siehe Dokumentation für interactive.

Bei Ausführung im nicht interaktiven Modus zeigt R keine Popup-Felder an. Standardmäßig wird R beim Ausführen von Code im Terminal im nicht interaktiven Modus ausgeführt. Nach oben in der Dokumentation, kann dies mit dem Befehl in Linux überschrieben

R --vanilla --interactive < "path/to/file.R" 

Ähnlich in Windows mit --ess mit Rterm.exe

Verwandte Themen