0

下面是一个 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"))

小部件

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

4

3 回答 3

1

我能想到的只有以下内容,从这篇文章开始。我不确定您是否愿意从头开始创建小部件,但在我看来,这是为您的参数手动选择标签的唯一方法。

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

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

于 2012-07-24T15:46:13.307 回答
1

为了充实我对爱德华的回答的评论,这就是gformlayoutfromgWidgets2可以使用的方法,尽管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

我还没有戴上gWidgets2CRAN(仍在 github 上),但会在某个时候。在这里,任何新功能都gWidgets将向前发展。

于 2012-07-24T19:35:14.410 回答
-1

@user1546302 的大解决方案的替代方案使用反引号:(请注意,您的原始帖子中有几个不匹配的括号。我试图纠正这个问题,但 SO 拒绝了,因为它没有足够的字符更改)。

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"))
于 2012-07-24T15:53:59.687 回答