我有一个基于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)
}
答案 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)
}