Defaults | R Documentation |
Use globally specified defaults, if set, in place of formally specified default argument values. Allows user to specify function defaults different than formally supplied values, e.g. to change poorly performing defaults, or satisfy a different preference.
setDefaults(name, ...)
unsetDefaults(name, confirm = TRUE)
getDefaults(name = NULL, arg = NULL)
importDefaults(calling.fun)
name |
name of function, quoted or unquoted (see Details) |
... |
name=value default pairs |
confirm |
prompt before unsetting defaults |
arg |
values to retrieve |
calling.fun |
name of function to act upon |
Provides a wrapper to R options
that allows the user to
specify any name=value pair for a function's formal arguments.
Only formal name=value pairs specified will be updated.
Values do not have to be respecified in subsequent calls to
setDefaults
, so it is possible to add new defaults for each
function one at a time, without having to retype all previous values.
Assigning NULL
to any argument will remove the argument from
the defaults list.
name
can be an unquoted, bare symbol only at the top-level. It
must be a quoted character string if you call setDefaults
inside
a function.
Removes name=value pairs from the defaults list.
Provides access to the stored user defaults. Single arguments need not be quoted, multiple arguments must be in a character vector.
A call to importDefaults
should be placed on the first line
in the body of the function. It checks the user's environment for
globally specified default values for the called function. These
defaults can be specified by the user with a call to
setDefaults
, and will override any default formal
parameters, in effect replacing the original defaults with user
supplied values instead. Any user-specified values in the parent
function (that is, the function containing importDefaults
)
will override the values set in the global default environment.
setDefaults |
None. Used for it's side effect of setting a list of default arguments by function. |
unsetDefaults |
None. Used for it's side effect of unsetting default arguments by function. |
getDefaults |
A named list of defaults and associated values, similar to
This does not imply that the returned function names are able
to accept defaults (via |
importDefaults |
None. Used for its side-effect of loading all non- |
At present it is not possible to specify NULL
as a replacement
for a non-NULL
default, as the process interprets NULL
values as being not set, and will simply use the value specified
formally in the function. If NULL
is what is desired, it is
necessary to include this in the function call itself.
Any arguments included in the actual function call will take
precedence over setDefaults
values, as well as the standard
formal function values. This conforms to the current user
experience in R.
Like options
, default settings are not kept across
sessions. Currently, it is not possible to pass values for
... arguments, only formally specified arguments in the original
function definition.
unsetDefaults
removes the all entries from the
options
lists for the specified function. To remove single
function default values simply set the name of the argument to
NULL
in setDefaults
.
When a function implements importDefaults
, non-named
arguments may be ignored if a global default has been set
(i.e. not NULL
). If this is the case, simply name the
arguments in the calling function.
This should also work for functions retrieving formal
parameter values from options
, as it assigns a value to the
parameter in a way that looks like it was passed in the function
call. So any check on options
would presumably disregard
importDefaults
values if an argument was passed to the
function.
Jeffrey A. Ryan
options
my.fun <- function(x=3)
{
importDefaults('my.fun')
x^2
}
my.fun() # returns 9
setDefaults(my.fun, x=10)
my.fun() # returns 100
my.fun(x=4) # returns 16
getDefaults(my.fun)
formals(my.fun)
unsetDefaults(my.fun, confirm=FALSE)
getDefaults(my.fun)
my.fun() # returns 9
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.