These are setter functions to produce actions in a Shiny app, or in an animation.

subsetControl(value = 1, subsets, subscenes = NULL,
                         fullset = Reduce(union, subsets),
                         accumulate = FALSE)
propertyControl(value = 0, entries, properties, objids, values = NULL,
                param = seq_len(NROW(values)) - 1, interp = TRUE)



The value to use for input (typically input$value in a Shiny app.)


A list of vectors of object identifiers; the value will choose among them.


Objects in the subscene which are not in fullset will not be touched.


The subscenes to be controlled. If NULL, the root subscene.


If TRUE, the subsets will accumulate (by union) as the value increases.

entries, properties, objids

Which properties to set.


Values to set.


Parameter values corresponding to the rows of value


Whether to use linear interpolation between param values


subsetControl produces data for playwidget to display subsets of the object in one or more subscenes. This code will not touch objects in the subscenes if they are not in fullset. fullset defaults to the union of all the object ids mentioned in subsets, so by default if an id is not mentioned in one of the subsets, it will not be controlled by the slider. If value is specified in R code, it will be a 1-based index into the subsets list; when specified internally in Javascript, 0-based indexing into the corresponding array will be used.

propertyControl sets individual properties. Here the row of values is determined by the position of value in param.


These functions return controller data in a list of class "rglControl".


Duncan Murdoch

See also

subsetSetter for a way to embed a pure Javascript control, and playwidget for a way to use these in animations (including Shiny), rglShared for linking using the crosstalk package.