50% off | Unlimited Data & AI Learning

Last chance! 50% off unlimited learning

Sale ends in


prodlim (version 1.2.1)

SmartControl: Function to facilitate the control of arguments passed to subroutines.

Description

Many R functions need to pass several arguments to several different subroutines. Such arguments can are given as part of the three magic dots "...". The function SmartControl reads the dots together with a list of default values and returns for each subroutine a list of arguments.

Usage

SmartControl(call,
	     keys,
	     ignore,
	     defaults,
	     forced,
	     split,
	     ignore.case=TRUE,
	     replaceDefaults,
	     verbose = TRUE)

Arguments

call
A list of named arguments, as for example can be obtained via list(...).
keys
A vector of names of subroutines.
ignore
A list of names which are removed from the argument call before processing.
defaults
A named list of default argument lists for the subroutines.
forced
A named list of forced arguments for the subroutines.
split
Regular expression used for splitting keys from arguments. Default is "\.".
ignore.case
If TRUE then all matching and splitting is not case sensitive.
replaceDefaults
If TRUE default arguments are replaced by given arguments. Can also be a named list with entries for each subroutine.
verbose
If TRUE warning messages are given for arguments in call that are not ignored via argument ignore and that do not match any key.

See Also

plot.prodlim

Examples

Run this code
dumPlot = function(...){
 ## set defaults
 plot.DefaultArgs=list(x=0,y=0,type="n")
 lines.DefaultArgs=list(x=1:10,lwd=3)
 ## apply smartcontrol
 x=SmartControl(call=list(...),
           defaults=list("plot"=plot.DefaultArgs, "lines"=lines.DefaultArgs),
        ignore.case=TRUE,keys=c("plot","axis2","lines"),
             forced=list("plot"=list(axes=FALSE),"axis2"=list(side=2)))
 ## call subroutines
 do.call("plot",x$plot)
 do.call("lines",x$lines)
 do.call("axis",x$axis2)
}
dumPlot(plot.ylim=c(0,5),plot.xlim=c(0,20),lines.lty=3,axis2.At=c(0,3,4))

Run the code above in your browser using DataLab