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」ではなく「Maximumnumberofrows」と書きたいと思います。

4

3 に答える 3

1

エドワードの答えに対する私のコメントを具体化するために、これはgformlayoutfromを使用する方法ですが、直接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です。

于 2012-07-24T19:35:14.410 に答える
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

@ 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"))
于 2012-07-24T15:53:59.687 に答える