有哪些R包或代码可用于构建定制的GUI界面?

19

我希望创建一个 GUI,它可以接收用户的一些输入(例如性别、年龄和种族等可点击的类别),然后为每个输入分配一个用户 ID(这将显示为 GUI 中的输出)。在幕后,GUI 将使用这些用户输入创建一个数据集(在此示例中,它将包含 4 个变量:用户 ID、性别、年龄和种族)。

有人之前创建过这样的 GUI 吗?有没有 R 包或代码推荐?

谢谢!


这个问题很可能会在SO上得到好的、完整的答案。 - whuber
关于基于Web的GUI,例如存在Apache模块 - 或者您是否对与R非常紧密相关的GUI感兴趣? - Iterator
1
如果您愿意接受基于网络的调查,那么有一些不错的系统和一些好的R软件可以分析这些标准调查系统的输出。由您决定,我只是想要澄清您的需求。 - Iterator
@迭代器:没错。R作为一种调查工具(执行)?还是更多地是为那些不喜欢控制台的人提供一些交互式分析? Murphy船长:UCLA?你不能问问Jeroen吗?在基于Web的R GUI方面,我想他比其他人都更厉害。 - Matt Bannert
3个回答

13

有很多种方法可以做到这一点。这里介绍一种使用插件包gWidgets的方法。应该适用于RGtk2或tcltk后端。

library(gWidgets)
items <- data.frame(id=numeric(0), gender=character(0), age=numeric(0), race=character(0), stringsAsFactors=FALSE)
genders <- c("Male", "Female")
race <- c("Black", "Hispanic", "Other")

w <- gwindow("Capn's GUI", visible=FALSE)
g <- ggroup(cont=w, horizontal=FALSE)
lyt <- glayout(cont=g)
lyt[1,1] <- "Gender:"
lyt[1,2] <- gradio(genders, cont=lyt)

lyt[2,1] <- "Age:"
lyt[2,2] <- gedit("40", coerce.with=as.numeric, cont=lyt)

lyt[3,1] <- "Race:"
lyt[3,2] <- gcombobox(race, selected=0L, cont=lyt)

lyt[4,2] <- gbutton("Add", cont=lyt, handler=function(h,...) {
  vals <- lapply(lyt[1:3, 2], svalue)
  id <- nrow(items) + 1                 # or roll your own
  items[id, ] <<- c(id, vals)
  tbl[] <- items
})
gseparator(cont=g)
tbl <- gtable(items, cont=g)


visible(w) <- TRUE

7

对于非RStudio用户,您可以像Tal指出的那样使用gWidgetsManipulate。该软件包目前不在CRAN上,而在r-forge上:https://r-forge.r-project.org/R/?group_id=761 - jverzani
@jverzani,gWidgetsManipulate的命运如何?它是否已移植到gWidgets2?我认为在CRAN上拥有一个类似于非RStudio的manipulate包会很不错。 - landroni
这里有一个例子:https://github.com/jverzani/gWidgets2/blob/master/inst/examples/manipulate.R - jverzani

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接