Description Usage Arguments Details See Also Examples
This widget displays either a vector, matrix or data frame in a tabular format. The main usage is for user selection of a row or rows.
1 2 3 |
items |
A vector, matrix or data frame to be displayed. A vector and matrix is coerced into a data frame. |
multiple |
A logical. If |
chosencol |
By default, only the value in this column is
returned by the |
icon.FUN |
If given, this function is applied to the data frame to be shown. It should return a vector of stock icon names |
filter.column |
If not |
filter.labels |
If more complex filtering is desired then this argument populates the values of the combobox and the |
filter.FUN |
Either a function with signature |
handler |
Called on a double click event |
action |
Passed to handler |
container |
Optional container to attach widget to |
... |
ignored |
toolkit |
Which GUI toolkit to use |
The svalue
method returns the selected value(s). By
default, only the value(s) in the chosen column are
returned. Use the argument drop=FALSE
to return the
entire row. To return the row index, use the argument
index=TRUE
. This index refers to the whole data store,
not just the visible portion when filtering is being used.
The "["
notion treats the object like a data frame. When
filtering, this notation refers to the entire data frame, not
the visible data frame. The comment about the
returned index by svalue
can be described by the fact that
obj[svalue(obj,index=TRUE), ]
should be the same value as
svalue(obj)
.
Assignment via "[<-"
is possible with limitations imposed
by the toolkits. The graphical display of tabular matter is
usually done, similar to data frames, in terms of columns each
having the same type. For some toolkits, all values are
converted to characters, for others, the type must be
maintained. In R, coercion of types may occur when assigning to
a data frame, but this won't be so with the underlying toolkit widget.
To be portable across toolkits, the column type should not
change during assignment, nor should the number of rows be
reduced.
In particular, assignment with "[<-"
for factors can
cause warnings if the values are not in the factor's
levels. When the value being assigned is a matrix there is a
coercion to a data frame which may change the type.
The visible
and visible<-
methods refer to which
rows of the data store are visible in the widget. These are
specified by a vector of class logical. This may be used when
there is filtering, not sorting. The value returned by
svalue
is a logical vector of length given by the number
of rows of the data store, with TRUE
indicating that the
row is displayed. When setting the visibility of a row through
svalue
the vector of values should have the same length
as the number of rows, otherwise recycling occurs. (So
visible(obj) <- TRUE
will work to display all the rows.)
The length
method returns the length of the underlying
data store.
The dim
method returns the dimension of the underlying
data store.
The names
method returns the names of the underlying data
store.
The names<-
method can be used to set the names of the
underlying data store and the values displayed in the column
headers of the widget.
Row names are ignored in the display of this widget.
A single click is used for selection of a value.
The addHandlerDoubleclick
handler can be used to define a
callback to respond to a double click event.
See also
gtree
for displaying tree-like data and
gdf
for tabular data meant to be edited
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | ## Not run:
## example to select CRAN mirror
m <- getCRANmirrors()[,c(1,4)]
setCRAN <- function(URL) { ## see chooseCRANmirror
repos = getOption("repos")
repos["CRAN"] <- gsub("/$", "", URL)
options(repos=repos)
}
w <- gwindow("gtable example",width=400)
gp <- ggroup(horizontal=FALSE, container=w)
tab <- gtable(m, chosencol = 2, container=gp, expand=TRUE,
handler = function(h,...) setCRAN(svalue(h$obj)))
bg <- ggroup(container=gp)
addSpring(bg)
gbutton("dismiss", container=bg, handler = function(h,...) dispose(w))
## an example with icons.
## Select variables from a data frame
## find icons by class
icon.FUN <- function(items) {
dfName <- svalue(cb)
df <- try(get(dfName, envir=.GlobalEnv), silent=TRUE)
if(inherits(df,"try-error"))
return(rep(NULL,dim(items)[1]))
if(is.data.frame(items))
items <- items[,1, drop=TRUE]
sapply(items, function(i) {
class(df[,i])[1]
})
}
## list data frames in an environment
lsDF <- function(envir=.GlobalEnv) {
varNames <- ls(envir=envir)
dfs <- sapply(varNames, function(i) inherits(get(i,envir=envir),"data.frame"))
varNames[dfs]
}
## set up GUI
w <- gwindow("Select variables",width=250)
g <- ggroup(horizontal=FALSE, container=w)
l <- glabel("Data frame", container=g)
cb <- gcombobox(lsDF(), container=g)
blankDF = data.frame(variables=character(0), stringsAsFactors=FALSE)
tbl <- gtable(blankDF, icon.FUN=icon.FUN, container=g, expand=TRUE)
## add handlers
addHandlerChanged(cb, handler <- function(h,...) {
dfName <- svalue(h$obj)
dfNames <- names(get(dfName,envir=.GlobalEnv))
tbl[,] <- data.frame(variables=dfNames, stringsAsFactors=FALSE)
})
addHandlerClicked(tbl, handler = function(h,...) {
cat("Do something with",svalue(cb),"::", svalue(h$obj),"\n")
})
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.