我有一个简单的R脚本。当它通过Rscript.exe运行时,默认情况下它正在绘制为PDF文件。我希望脚本打开一个绘图窗口。
我使用命令:
Rscript.exe tmp_plot.R
r file tmp_plot.R包含:
x <- 1:10
y <- sin(x)
plot(x,y)
答案 0 :(得分:18)
您正在以非交互方式运行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
用于运行不需要人工干预或干预的脚本或类似批处理的作业。
答案 1 :(得分:5)
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按钮)时退出。
答案 2 :(得分:0)
使用Windows,我编写了一个批处理脚本来解决此问题,该脚本在脚本上调用Rscript,然后立即打开生成的PDF。
@echo off
rscript myscript.r
Rplots.pdf
尽管这种解决方案很荒谬,但这正是我所需要的,它只是即时查看绘制的数据。