【发布时间】:2018-06-22 15:00:45
【问题描述】:
我使用名为 Main.R 的 RGtk2 制作了一个 GUI,它在从 RStudio 运行时可以完美运行,但只有在我在其中打开 R 然后获取脚本时才能在 CMD 中运行。我的目标是让它完全可移植,从而编写一个能够运行它的 .bat 文件。
经典命令 R CMD BATCH Main.R 和 Rscript Main.R 不起作用。在这些情况下,窗口在创建后立即关闭,而不是等待我进行交互。 经过一番研究,我才发现来自run R script from .bat (batch file) 的 OP(遗憾的是未得到答复)遇到了类似的问题,但我的问题与他的不同,所以我仍然相信我的帖子是有道理的。
这些命令甚至不适用于我用同一个库制作的非常简单的程序,这表明问题可能是由 GTk 本身引起的。
library(RGtk2)
Destroy <- function(button) {
window $ destroy()
}
vbox <- gtkVBoxNew (FALSE, 10, TRUE) #container for the first tab
vbox $ setBorderWidth (10)
label <- gtkLabelNew ("Welcome ! Click on the button to close the window")
vbox $ packStart (label, TRUE, 20, 0)
closeButton <- gtkButtonNewWithLabel("Close")
vbox $ packStart(closeButton, FALSE, FALSE, 0)
gSignalConnect (closeButton , "clicked" , Destroy)
#links the startButton to the Start function
window <- gtkWindow (NULL, FALSE)
window ["title"] <- "Example"
gtkWindowResize(window, 800, 450)
window $ add (notebook)
window $ showAll()
在我的批处理文件中,我尝试了其他变体:
@echo off
title OCR GUI
start R.exe & "source("OCR_MR/R/Main.R")"
当然,当手动关闭 R 会话时,文件会执行最后一行。由于 R.exe 不能接受任何参数我需要让我的批处理文件在 R 中输入。有什么办法吗?
任何帮助将不胜感激!
更新:感谢一些 cmets,我意识到 Rscript 不会等待任何类型的输入,甚至
readline(prompt="message")
不起作用。这可能是在非交互模式下运行交互命令的问题,会及时更新!
【问题讨论】:
-
在脚本末尾添加
readline(prompt = "Hit Enter to quit: ")是否可以解决问题? -
请考虑
Rscript,它现在已经存在了十多年,在各个方面都优于R CMD BATCH。在 Unix 上,来自 littler 的r也不错(尽管我是(共同)作者,因此并非没有偏见)。 -
感谢您的 cmets !可悲的是,即使使用@Dason 的行,我也无法让 Rscript 正确显示窗口。我开始相信这可能是一个软件安装问题,因为即使我只是通过 readline 命令要求它等待输入,它也不会等待输入,它将让您保持更新
标签: r batch-file cmd gtk