使用X11窗口的R脚本仅打开一秒钟

使用X11窗口的R脚本仅打开一秒钟,r,x11,R,X11,我正在通过LinuxMint16命令行运行一个R脚本。它包含我想在窗口中显示的箱线图。所以我使用x11()函数来创建这个窗口。这是我的密码: testdata <- data.frame(sample(1:1000,size=100,replace=T), row.names=NULL) colnames(testdata)<-c("data") x11() boxplot(testdata, main="Boxplot der Testdaten", horizontal=TRU

我正在通过LinuxMint16命令行运行一个R脚本。它包含我想在窗口中显示的箱线图。所以我使用x11()函数来创建这个窗口。这是我的密码:

testdata <- data.frame(sample(1:1000,size=100,replace=T), row.names=NULL)
colnames(testdata)<-c("data")

x11()
boxplot(testdata, main="Boxplot der Testdaten", horizontal=TRUE)

testdata这或多或少是一个常见问题。部分原因是您似乎误解了所有命令的终止方式。也就是说,当您调用
ls
时,它也不会停止

所以这里你需要一些额外的东西。可能的方法:

  • 只需通过
    Sys.sleep(10)
    进行睡眠,它将等待10秒钟

  • 等待用户通过
    readLines(stdin())
    或类似的方式进行输入[未测试]

  • 使用tcltk软件包,该软件包随R一起提供,并且在所有平台上都可用,可以弹出一个窗口,用户必须单击该窗口才能使单击消失。多年来,该解决方案在r-help上发布了几次


但在这个时代,你也可以重新思考这个问题。我通过在网页上显示的最棒的软件包成功地为同事准备了分析和可视化。每个人都有一个网络浏览器…

你可以一直睡到所有窗口都关闭

while(names(dev.cur()) !='null device') Sys.sleep(1)
在我的机器上,调用
x11()
后,
名称(dev.cur())
是“X11cairo”。关闭使用x11打开的所有/任何窗口后,
名称(dev.cur())
变为“空设备”


testdata是脚本的全部内容吗?请注意,脚本完成后,R将退出,关闭所有打开的图形设备。是否让脚本保存绘图?或者您希望能够在命令行中使用与使用RStudio相同的R吗?我不想保存它。我只需要把它显示在屏幕上。你说得对,我想在命令行中使用R,就像Rstudio一样。这是因为这是uni的一个项目,任务说我们必须从命令行启动程序。我使用
readLines(stdin())
找到了解决方案。这对我很管用。我贴了一张“按任意键并输入以关闭窗口”。用户输入后,窗口关闭。它既可以在我的Linux Mint 16机器上使用
Rscript X.R
启动脚本,也可以在我的Windows 8.1命令行窗口上使用
Rscript.exe X.R
启动脚本。现在我正在研究tcltk包,它非常好用。最后我想我会去的。正在进行的工作。谢谢很高兴听到它起作用了。如果你喜欢这个答案,那么习惯性的做法是“接受”(通过点击你作为提问者的勾号)和“向上投票”(通过点击“向上三角形”)。谢谢。很抱歉没有投票,我的声誉太低了。这是我的方式。但是,在关闭windows之后,dev.cur()
对我来说变成了“pdf”,因此如果您尝试此操作,它会挂起,您可能希望在while条件中
打印(名称(dev.cur())
,以查看关闭窗口后它会发生什么变化,然后进行相应的处理。
testdata <- data.frame(sample(1:1000,size=100,replace=T), row.names=NULL)
colnames(testdata)<-c("data")

x11()
boxplot(testdata, main="Boxplot der Testdaten", horizontal=TRUE)
# wait until window is closed (check every second)
while(names(dev.cur()) !='null device') Sys.sleep(1)