GtkTreeModel
implementation backed by an R data framerGtkDataFrame(frame = data.frame())
rGtkDataFrameNew(frame = data.frame())
rGtkDataFrameAppendColumns(x, ...)
rGtkDataFrameAppendRows(x, ...)
"as.data.frame"(x, ...)
rGtkDataFrameSetFrame(x, frame = data.frame())
"["(x, i, j, drop = T)
"["(x, i, j) <- value
"dim"(x, ...)
"dimnames"(x, ...)
"dimnames"(x) <- value
RGtkDataFrame
object[<-.data.frame
or the dimnames for the data frameRGtkDataFrame
.
as.data.frame.RGtkDataFrame
returns the data frame backing the model.
[.RGtkDataFrame
returns the result of the [
method on the backing frame.
GtkTreeModel
was implemented that draws data directly from an R data frame. This offers not only a
dramatic performance gain but also allows efficient addition of columns to a model,
which the default GTK implementations do not allow.The RGtkDataFrame
is constructed with a delegate data frame, which can be empty,
via either rGtkDataFrameNew
or rGtkDataFrame
for short. The subset and
replacement methods work much the same as for normal data frames, except one should note that
removing columns (ie by replacing columns with NULL
s) is not supported.
Note that even if the initial data frame is empty, one should ensure that the empty vectors
representing the column are of the desired types. If one wants to simply replace the backing frame
with a new one, then there are two options: create a new RGtkDataFrame and connect it to the views
of the old model, or use rGtkDataFrameSetFrame
.
The rGtkDataFrameAppendColumns
and rGtkDataFrameAppendRows
methods allow appending columns and rows, respectively.
Note that these are a lot shorter if using the object$appendColumns(...)
syntax.
The as.data.frame
method retrieves the backing data frame from the model, so that one
can perform any data frame operation on the data. Of course, any changes are not
propagated back to the model, so it may take some work to efficiently merge any changes, if necessary.
For convenience, one can access the dimensions and dimension names using dim.RGtkDataframe
and
dimnames.RGtkDataFrame
, respectively. It is possible to set the dimension names using the
conventional replacement function. Note that rownames mean nothing to GTK.