我有一個R腳本查詢數據庫,運行一些分析,並根據當前系統日期繪製幾張圖表。在屏幕上留下RScript生成的圖表直到用戶交互
我想讓這個腳本每天在啓動時運行,我想我可以很簡單地使用帶有必要參數的rscript.exe快捷方式來執行此操作。
這很好,但腳本運行後退出,對於查看圖表不是很有用。
我正在使用XP和win7。
有沒有一種簡單的方法來保持屏幕上的腳本輸出?我試過將掃描結合到腳本中,但它不會暫停。
我知道我可以只打開RGUI,並運行一個單一的代碼行,但計劃是這一部署到誰與R.
我有一個R腳本查詢數據庫,運行一些分析,並根據當前系統日期繪製幾張圖表。在屏幕上留下RScript生成的圖表直到用戶交互
我想讓這個腳本每天在啓動時運行,我想我可以很簡單地使用帶有必要參數的rscript.exe快捷方式來執行此操作。
這很好,但腳本運行後退出,對於查看圖表不是很有用。
我正在使用XP和win7。
有沒有一種簡單的方法來保持屏幕上的腳本輸出?我試過將掃描結合到腳本中,但它不會暫停。
我知道我可以只打開RGUI,並運行一個單一的代碼行,但計劃是這一部署到誰與R.
這對我的作品在Linux上人生地不熟的一個同事的電腦:
#!/usr/bin/env Rscript
X11()
with(mtcars, plot(mpg, hp))
locator(1)
用戶必須在消失之前單擊繪圖窗口。我認爲它可以在Windows上使用windows()
來代替。
邁克爾的解決方案可能已經可以工作,但是這裏有一些內容顯示在tkrplot框架內。 tkrplot軟件包(在CRAN上)使用R的tcltk擴展,並且隨處可用。
# From http://stackoverflow.com/questions/3063165/
# r-building-a-simple-command-line-plotting-tool-
# capturing-window-close-events
require(tcltk)
library(tkrplot)
## function to display plot, called by tkrplot and embedded in a window
plotIt <- function(){ plot(x=1:10, y=1:10) }
tt <- tktoplevel() ## create top level window event handler
done <- tclVar(0) ## variable to wait on
## bind to the window destroy event, set done variable when destroyed
tkbind(tt,"<Destroy>",function() tclvalue(done) <- 1)
## Have tkrplot embed the plot window, then realize it with tkgrid
tkgrid(tkrplot(tt,plotIt))
tkwait.variable(done) ## wait until done is true
## script continues, or exits, ... once plot is closed
你如果透過R的tcltk文檔,找到「確定」按鈕,其他的例子,關閉等
如何Sys.sleep(1e30)?這應該等待足夠長的時間。
哈,這是一個不錯的快速和骯髒的解決方案。優秀。 – BetaScoo8
用戶將不得不關閉窗口或點擊轉義或ctrl-something來擺脫它。 – Spacedman
使它在Windows中工作只是使用Sys.sleep(10000),的確,1e30沒有任何作用(Windows 8 64位) – pommedeterresautee
好吧,對於這類問題我所看到的所有答案都完全蠢蠢欲動,因爲他們都沒有在Windows上工作過。 readline,tkwait.window,Sys.sleep(1e30),while(TRUE),沒有任何工作。
但是我剛剛將R更新爲v3.1.0,現在tkwait.window(yourmainwindow)有效,while(TRUE){}有效,儘管Sys.sleep(1e30)仍然無效。
沒關係......我正在使用tkwait.window,因爲它是tk,並且正在等待我的窗口(這正是我想要的)。
獲得例如從http://www.sciviews.org/_rgui/tcltk/OKtoplevel.html工作...(註釋爲簡潔起見刪除)
require(tcltk)
tt <- tktoplevel()
OK.but <- tkbutton(tt, text = "OK", command = function() tkdestroy(tt))
tkgrid(OK.but)
tkfocus(tt)
tkwait.window(tt) # <-- added this to make the window stay!
可能輸出到一個圖形文件(如PNG),並彈出的是在屏幕上用合適的瀏覽器? –
將此與Latex結合起來(可能使用Sweave,也可能沒有我想象)可以讓您生成帶有報告的pdf。 –
我很不熟悉乳膠(雖然看起來不錯),而且圖像瀏覽者並沒有像一種非常穩健的方式讓它起作用(即有人安裝了一些相機軟件並且一切都打破了) 我想知道是否有一批文件可以幫助,只是嘗試,但rscript仍然退出退出並關閉圖形窗口。 感謝您的想法。 – BetaScoo8