R小部件中参数的名称

时间:2012-07-24 07:41:41

标签: r gwidgets

以下是R小部件的人工示例

library(gWidgets)
options("guiToolkit"="RGtk2")

f <- function(file, max.rows){
    dat <- read.table(file, nrows=max.rows)
return(max(dat[,]))
}

lst <- list() 
    lst$action <- list(beginning="f(",ending=")")
    lst$arguments$file <- list(type="gfilebrowse")
    lst$arguments$max.rows <- list(type="gedit", text=-1)

ggenericwidget(lst, container=gwindow("Example"))

widget

R小部件中每个参数的名称与R函数中的名称相同。是否可以仅更改R小部件中显示的名称?例如,我想在R小部件中写入“最大行数”,而不是“max.rows”。

3 个答案:

答案 0 :(得分:1)

this post起,我可以提出以下所有内容。我不确定你是否愿意从零开始创建小部件,但在我看来,这是为你的参数手动选择标签的唯一方法。

library(gWidgets)
options("guiToolkit"="RGtk2")

f <- function(file, max.rows){
   dat <- read.table(file, nrows=max.rows)
   return(max(dat[,]))
}

win <- gwindow("Example")

grp.text <- ggroup(horizontal=FALSE, container = win)
lbl.text <- glabel("Maximum Lines: ", container = grp.text)
insert.text <- gedit(-1, container = grp.text)

grp.file <- ggroup(horizontal=FALSE, container = win)
lbl.file <- glabel("File: ", container = grp.file)
browse.file <- gfilebrowse(container = grp.file)

read <- gbutton(text="Go", container = grp.file, 
    handler = function(h, ...) {
            cat(f(svalue(browse.file), 
                as.numeric(svalue(insert.text))));
    }
)

这是一个很小的例子;在此过程中必须进行一些错误检查。

答案 1 :(得分:1)

为了充实我对爱德华答案的评论,这是gformlayout来自gWidgets2的方式,但直接使用gtable可能也是如此。

library(gWidgets2)
options("guiToolkit"="RGtk2")

f <- function(file, max.rows){
    dat <- read.table(file, nrows=max.rows)
    message("Calling max")
    print(max(dat[,]))
}

## containers
w <- gwindow("Example", visible=FALSE)
fr <- gframe("Arguments", horizontal=FALSE, cont=w)       # optional frame
fl <- gformlayout(cont=fr)
## widgets
select_file <- gfilebrowse(cont=fl, label="File")
max_rows <- gedit(-1, cont=fl, label="maximum number of rows", coerce.with=as.numeric)
## button
bg <- ggroup(cont=fr)
addSpring(bg)
btn <- gbutton("ok", cont=bg)

addHandlerClicked(btn, function(h,...) {
  l <- svalue(fl) ## a named list by the labels,
  do.call(f, setNames(l, c("file", "max.rows"))) ## change names for do.call
})
visible(w) <- TRUE

我还没有把gWidgets2放在CRAN上(仍然在github上),但是在某些时候。这是gWidgets未来的任何新功能。

答案 2 :(得分:-1)

来自@ user1546302的大解决方案的替代方案使用后退标记: (请注意,您的原始帖子中有几个不匹配的括号。我试图纠正这个,但是因为字符更改不够而被拒绝了。)

library(gWidgets)
options(guiToolkit="RGtk2")

f <- function(file, max.rows){
  dat <- read.table(file, nrows=max.rows)
  max(dat[,])
}

lst <- list() 
lst$action <- list(beginning="f(",ending=")")
lst$arguments$file <- list(type="gfilebrowse")
lst$arguments$`max rows` <- list(type="gedit",text=-1)

ggenericwidget(lst, container=gwindow("Example"))