gpt4 book ai didi

r - 将脚本作为参数传递给 RGui

转载 作者:行者123 更新时间:2023-12-04 17:27:11 28 4
gpt4 key购买 nike

我想知道是否可以从 Windows 中的命令提示符将参数传递给 RGui。
我想做类似的事情

RGui myScript.r param1 param2

就像我用 RScript 做的那样,但我需要显示一个 GUI。

这是有关我的需求的更多信息。
我想在我的 C# 表单应用程序中嵌入一个用 R 编写的 gui。会发生什么是我按下表单中的一个按钮,应用程序启动一个进程,该进程使用我的脚本和一些参数调用 RGui。到目前为止,这在 RScript 中运行良好,但现在我正在显示图形,我需要 R 处于交互模式。
这是我正在使用的代码:
        myProcess.StartInfo.FileName =Pathing.GetUNCPath( r_path) + "\\Rscript";
string script_path=Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.Parent.FullName.ToString();
myProcess.StartInfo.Arguments = Pathing.GetUNCPath(script_path) + "\\display.r " + data_path;
myProcess.StartInfo.UseShellExecute = true;
myProcess.Start();
myProcess.WaitForExit();

最佳答案

如上所述,你通常不能这样做。如果您侵入您的 RprofileRprofile.site (有关更多信息,请参阅 ?Startup 或 this site ),您可以解决这个问题,但代码不可移植到其他计算机。所以,如果你觉得自己真的很幸运和大胆,你可以尝试做以下事情。

您将此代码添加到您的 Rprofile文件或 Rprofile.site (可以在 R 安装的/etc 文件夹中找到):

Args <- commandArgs(trailingOnly=TRUE)
if(length(Args)>0 & sum(grepl(" -f ",commandArgs()))==0 ){
if(grepl("(?i).r$",Args[1])){
File <- Args[1]
Args <- Args[-1]
tryCatch(source(File) , error=function(e) print(e) )
}
}

这将允许您执行以下操作:
Rgui --args myscript.r arg1 arg2
Rscript myscript.r arg1 arg2
R --args myscript.r arg1 arg2
R -f myscript.r --args arg1 arg2

--args 参数将处理@iterator 警告的弹出窗口。该代码将产生一个变量 Args它包含在基本环境中(不是 .GlobalEnv!)。此变量包含除文件名之外的所有参数。您随后可以从您的脚本访问该脚本,例如:
#dumb script
print(Args)

如果用 Rgui 调用或 R ,还会有一个变量 File ,其中包含已获取的文件的名称。

请注意,更改您的 rProfile 不能移植到其他计算机。所以这仅供个人使用。您也不能在 --args 之后将 -f 作为参数提供,否则会出错。

编辑:我们最好搜索“-f”而不是“-f”,因为这可能发生在“path/to/new-files/”中。

关于r - 将脚本作为参数传递给 RGui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944970/

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