【问题标题】:Make a R script executable by sourcing it in a batch file通过在批处理文件中获取 R 脚本使其可执行
【发布时间】:2018-06-22 15:00:45
【问题描述】:

我使用名为 Main.R 的 RGtk2 制作了一个 GUI,它在从 RStudio 运行时可以完美运行,但只有在我在其中打开 R 然后获取脚本时才能在 CMD 中运行。我的目标是让它完全可移植,从而编写一个能够运行它的 .bat 文件。

经典命令 R CMD BATCH Main.RRscript 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


【解决方案1】:

找到答案:我尝试通过批处理模式以交互方式使用 R,由于批处理是非交互的,这显然无法工作。

由于这个答案,我仍然找到了一个解决方法:https://stackoverflow.com/a/11567220/9765404,包括下载 R-Portable 以及本地安装的项目使用的所有库,并将此功能添加到 Rprofile.site 文件(在 App/R-Portable/等):

.First = function(){ #.First() is the first function R-Portable will execute when opened
    .libPaths(.Library) #force R-Portable to use the local library
     source("path-to-file") #launches the program
}

然后您可以将包含 R-Portable 和您的项目的文件夹导出到任何 Windows 计算机并执行 R-Portable.exe,它可以在没有安装 R 的情况下运行。

【讨论】:

  • 谢谢。正在寻找这个。
猜你喜欢
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多