2011-08-11 41 views
6

我有一個簡單的R腳本。當它通過Rscript.exe運行時,默認情況下它將繪製成一個PDF文件。我想要腳本打開一個劇情窗口。Rscript正在繪製爲PDF

我使用下面的命令:

Rscript.exe tmp_plot.R 

R檔tmp_plot.R包含:

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

回答

17

您在非交互方式運行的R - RSCRIPT是爲腳本 - 也就是默認繪圖設備是pdf(),而不是x11()或任何您的操作系統的默認設置(windows()由它的外觀)。然而,打開替代設備是微不足道的;使用x11()windows()。嘗試編寫腳本以顯示屏幕上的繪圖時,您遇到的問題是,在您的示例代碼中,腳本在繪製繪圖時立即終止,無論顯示在屏幕上還是顯示在pdf()設備上。在最好的情況你可能會得到它使用Sys.sleep()暫停,例如:

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

我想你會對此錯誤的方式。如果你想在運行一個R「腳本」時使用交互性,我的意思是一組執行一些分析的R語句,你最好在你的操作系統上得到一個編輯器/ IDE,這樣你就可以在腳本中逐行執行一行代碼或一段代碼,並與正在運行的R會話進行交互。爲此,我使用Emacs和ESS擴展。你可以考慮Tinn-R或RStudio作爲替代品。

Rscript是用於運行不需要人工交互或干預的腳本或批處理作業。

+0

感謝您的回答。是的,我正在使用RStudio。我想使用批處理文件將另一臺機器上的r腳本「部署」爲獨立應用程序。有沒有類似Matlab的deploytool的東西? – 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) 

如果你不喜歡在規定的定時器的想法,上面的腳本將僅在按鍵退出(空格鍵或輸入),或從用戶的鼠標點擊(OK按鈕)。

+1

Rscript開發者可能會考慮一個--persist選項,類似於[gnuplot](http://www.gnuplot.info)提供的選項。 –