2011-08-11 17 views
6

Mam prosty skrypt R. Gdy jest uruchamiany przez Rscript.exe, domyślnie kreśli do pliku PDF. Chcę, aby skrypt otworzył okno wykresu.Rscript jest drukowanie do PDF

ja za pomocą polecenia:

Rscript.exe tmp_plot.R 

r plik tmp_plot.R zawiera:

x <- 1:10 
y <- sin(x) 
plot(x,y) 

Odpowiedz

17

Używasz R w nieinterakcyjnym sposób - Rscript jest przeznaczona dla skryptów - stąd domyślny urządzenie kreślące jest pdf(), a nie x11() lub cokolwiek jest domyślne w twoim systemie operacyjnym (windows()). Otwieranie alternatywnego urządzenia jest jednak trywialne; użyj x11() lub windows(). Problem z pisaniem skryptu, który wyświetli wykres na ekranie, polega na tym, że w pokazanym przykładowym kodzie skrypt kończy się natychmiast po narysowaniu wykresu, niezależnie od tego, czy jest wyświetlany na ekranie, czy na urządzeniu pdf(). W najlepszym razie można dostać to, aby zatrzymać przy użyciu Sys.sleep(), np .:

x <- 1:10 
y <- sin(x) 
x11() ## or windows() 
plot(x,y) 
Sys.sleep(10) 

Myślę, że będzie o to w niewłaściwy sposób. Jeśli chcesz mieć interaktywność podczas uruchamiania R "skryptu", przez co rozumiem zestaw instrukcji R, które wykonują pewną analizę, lepiej byłoby uzyskać edytor/IDE w systemie operacyjnym, który pozwala ci przejść przez skrypt w linii lub fragment kodu na raz, a także współdziałać z uruchomioną sesją R. Używam do tego rozszerzenia Emacs i ESS. Możesz rozważyć Tinn-R lub RStudio jako alternatywy.

Rscript jest przeznaczony do uruchamiania skryptów lub zadań typu wsadowego, które nie wymagają interakcji ani interwencji człowieka.

+0

Dzięki za odpowiedź. Tak, używam RStudio. Chciałem "wdrożyć" mój skrypt r na innym komputerze jako samodzielną aplikację przy użyciu pliku wsadowego. Czy istnieje coś podobnego do deploytoolu Matlaba? – r00kie

3
library(tcltk) # for message box and thus hold-open functionality 

x11() # for Linux, see documentation for other operating systems 

# first plot 
# second plot 

# hold-open functionality prevents script from exiting user acts 
prompt <- "hit spacebar to close plots" 
extra <- "some extra comment" 
capture <- tk_messageBox(message = prompt, detail = extra) 

Jeśli nie podoba Ci się pomysł wyznaczonym zegar, powyższy scenariusz wyjdzie tylko na naciśnięciu przycisku (spacji lub enter) lub przyciskiem myszy (przycisk OK) od użytkownika.

+1

Programiści Rscript mogą rozważyć opcję -persist, podobną do tej oferowanej przez [gnuplot] (http://www.gnuplot.info). –