启动R并从批处理文件中调用脚本

时间:2012-07-19 17:03:30

标签: r batch-file startup

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

虽然这不是一个过于具有挑战性的问题,但我不想让非技术人员在命令行输入任何。我曾经想过编写一个.bat文件(用户都在运行Windows,虽然多平台解决方案也很感激),它启动了R GUI,然后自动运行该命令。

我的第一个问题是从命令行打开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 个答案:

答案 0 :(得分:4)

问题1:我只是将安装在Windows上建议的默认目录中,而是将R组和一些相关内容安装在c:/opt/中我安装R本身例如,c:/opt/R-current,以便路径c:/opt/R-current/bin保持不变。升级时,我首先重命名为R-previous,然后安装到新的R-current

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

4.3.8

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

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)
}