#' @title Assign arguments to missing parameters
#' @description Assign arguments to missing parameters.
#' @param ... Parameters.
#' @param values Values to assign to missing parameters.
#' @param rep If `TRUE`, will assign the same default argument to all missing parameters.
#' @param parent_frame The number of generations to go back. See [`parent.frame()`] for details.
#' @export
assign_to_missing <- function(..., values, rep = FALSE, parent_frame = 2) {
missing_params <- get_missing_params(parent_frame)
set_defaults(missing_params, values, rep, parent_frame)
}
get_missing_params <- function(parent_frame) {
params <- as.list(parent.frame(parent_frame))
are_missing <- sapply(params, function(x) identical(x, quote(expr = )))
names(params)[are_missing]
}
set_defaults <- function(x, values, rep = FALSE, parent_frame) {
if (isTRUE(rep)) {
if (length(values) != 1) {
stop('"values" must be of length one when rep=TRUE.')
}
values <- rep(values, length(x))
} else if (!are_same_length(x, values)) {
stop('length of values differs from x')
}
for (i in seq_along(x)) {
assign(x[i], values[i], pos = parent.frame(parent_frame))
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.