以下是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”。
答案 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"))