3

我有一个基于 R 的 GUI,允许一些非技术用户访问统计模型。就目前而言,用户必须先加载 R,然后loadGui()在命令行中键入。

虽然这并不太具有挑战性,但我不喜欢让非技术人员在命令行中键入任何内容。我有编写一个启动 R GUI,然后自动运行该命令的 .bat 文件的想法(用户都在运行 Windows,尽管多平台解决方案也很受欢迎)。

我的第一个问题是从命令行打开 RGui。虽然我可以提供一个明确的路径,例如

"%ProgramW6432%\R\R-2.15.1\bin\i386\Rgui.exe"

每次升级 R 时都需要更新。从%path%环境变量中检索 RGui 的位置会更好,但我不知道解析它的简单方法。

第二个更大的问题是如何在启动时从命令行调用 R 的命令。我的第一个想法是我可以获取 的副本~/.Rprofile,附加额外的命令,然后在加载 R 后替换文件的原始副本。不过,这非常混乱,所以我想要一个替代方案。

在批处理模式下运行 R 不是一种选择,首先因为我无法说服 GUI 显示自己,其次因为我希望 R 控制台可用,即使用户不需要使用它。

如果你想要一个玩具 GUI 来测试你的想法,试试这个:

loadGui <- function()
{
  library(gWidgetstclck)
  win <- gwindow("test")
  rad <- gradio(letters[1:3], cont = win)
}
4

4 回答 4

4

问题 1:我根本安装在 Windows 上建议的默认目录中,而是将 R 和一些相关的东西放在c:/opt/我安装 R 本身的地方,比如说,c:/opt/R-current这样路径c:/opt/R-current/bin将保持不变。升级时,我首先重命名为R-previous,然后安装到新的R-current.

问题 2:我想我在很久以前就用脚本解决了。您现在可以使用Rscript.exe来启动这些,并且有等待提示的 tcltk 示例。

于 2012-07-19T17:11:50.327 回答
2

我做过几次类似的事情。在我的情况下,客户端使用的是 Windows,所以我只是在他们的计算机上安装了 R,并在他们的桌面上创建了一个快捷方式来运行 R。然后我右键单击快捷方式并选择属性以获取属性对话框。然后,我将“开始于”文件夹更改为我希望它从中运行的文件夹(其中包含具有正确数据的 .Rdata 文件以及 .Rdata 文件中的 .First 函数或文件夹中的 .Rprofile )。还有一个“运行:”选项,其中有一个“最小化”选项来最小化运行主 R 窗口。

我已经创建了我想要运行的函数(通常是使用 tcltk 的专用 gui)和任何需要的数据,并将它们保存在 .Rdata 文件中,还创建了 .First 或 .Rprofile 来运行显示 gui 的命令。用户双击桌面上的图标并弹出我的 GUI,他们可以使用它而忽略其他部分。

于 2012-07-19T18:37:42.163 回答
1

查看 ProjectTemplate 库。它做你想做的事。它从批处理文件加载使用过的库并在加载后自动运行 R 文件以及许多其他有用的东西......

于 2012-07-19T17:31:40.530 回答
0

使用来自https://stackoverflow.com/a/27350487/41338的答案和来自上面Richie Cotton的评论,我得出了以下解决方案,通过检查指向窗口的指针是否在关闭窗口之前保持脚本处于活动状态有效的。

对于使用以下命令创建和显示的 RGtk2 窗口:

library(RGtk2)
mainWindow <- gtkWindow("toplevel", show = TRUE)

创建一个检查指向它的指针是否存在的函数:

isnull <- function(pointer){
  a <- attributes(pointer)
  attributes(pointer) <- NULL
  out <- identical(pointer, new("externalptr"))
  attributes(pointer) <- a
  return(out)
}

在你的脚本的最后:

while(!isnull(mainWindow)) Sys.sleep(1)
于 2021-08-09T13:30:46.400 回答