gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:00:32 26 4
gpt4 key购买 nike

我使用名为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com