将所选值保存在R中的gcheckboxgroup中?

时间:2019-03-05 21:52:34

标签: r gwidgets

以下R脚本是使用gWidget的简单GUI。

我想知道为什么这段代码不能将用户选择的值保存在gcheckboxgroup中。

#### Clear the Global Environment:
rm(list=ls())

library(rattle)
library(RGtk2)
library(gWidgets)
library(tcltk)
library(lubridate)

w <- gwindow("checkbox example")

gp <- ggroup(container=w)

codes = c(
  "1000 F",
  "0100 Q",
  "0010 M",
  "0001 s")

cbg <- gcheckboxgroup(codes, cont=w)

selected_codes <- paste(svalue(cbg))

ff <- function(h,...) 

selected_codes <- svalue(cbg)

obj_run <- gbutton("Run", container=w, handler = ff)

2 个答案:

答案 0 :(得分:0)

感谢jverzani的评论。 但是,这不是解决方案。

实际上,通过单击GUI中的“运行”按钮,我们可以将selected_code为R存储器。但是由于它在函数/处理程序内部,因此无法保存。因此,我们需要使用以下代码将其保存(写入)到文件(例如.txt)中:

rm(list=ls())
library(rattle)
library(RGtk2)
library(gWidgets)
library(tcltk)
library(lubridate)

w <- gwindow("checkbox example")

gp <- ggroup(container=w)

codes = c(
  "1000 F",
  "0100 Q",
  "0010 M",
  "0001 s")

cbg <- gcheckboxgroup(codes, cont=w)



obj_run <- gbutton("Run", container=w, handler = function (h ,...){
  selected_codes <- paste0(svalue(cbg))
  write(selected_codes, file = "selected_codes.txt",
        ncolumns = if(is.character(selected_codes)) 1 else 1,
        append = FALSE, sep = " ")


})

答案 1 :(得分:0)

尝试一下,麻烦程度减轻:

library(gWidgets2)

w <- gwindow("checkbox example")

gp <- ggroup(container=w)

codes = c(
  "1000 F",
  "0100 Q",
  "0010 M",
  "0001 s")

g <- ggroup(cont=w, horizontal=FALSE)
cbg <- gcheckboxgroup(codes, cont=g)

selected_codes <- paste(svalue(cbg))

ff <- function(h,...) {

selected_codes <<- svalue(cbg)

}
obj_run <- gbutton("Run", container=g, handler = ff)

(由于包装容器,您可能遇到了问题。)