r - 通过在批处理文件中获取 R 脚本使其可执行

标签 r batch-file cmd gtk

我使用名为 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 session 手动关闭时,文件会执行最后一行。由于 R.exe 不能接受任何参数我需要让我的批处理文件在 R 中进行输入。有什么办法吗?

任何帮助将不胜感激!

更新:感谢一些评论,我意识到 Rscript 不等待任何类型的输入,甚至不等待

readline(prompt="message")

没用。这可能是在非交互模式下运行交互命令的问题,会让你更新!

最佳答案

找到答案:我尝试通过批处理模式交互式地使用 R,这显然行不通,因为批处理是非交互式的。

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

.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 即可运行。

关于r - 通过在批处理文件中获取 R 脚本使其可执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50990746/

相关文章:

r - ggplot2 将变量映射到 y 并使用 stat ="bin"时出错

windows - 禁用sed中反斜杠的转义功能

逗号和句点之间模式的正则表达式

r - 无论深度如何,都更新函数中的全局嵌套列表变量

batch-file - 我如何从批处理文件中的多行中获取此文本

batch-file - 如何创建运行用户指定软件的批处理脚本?

c - 批处理文件中设置的环境变量无法在该文件编译的C代码中访问

windows - 在嵌套批处理文件中设置环境变量

batch-file - 有没有办法在每次启动 cmd 时运行 vcvars32.bat?

r - 在 R 中找出 PDF 的编码