Aliases: call_modify
Keywords:
### ** Examples call <- quote(mean(x, na.rm = TRUE)) # Modify an existing argument call_modify(call, na.rm = FALSE)
mean(x, na.rm = FALSE)
call_modify(call, x = quote(y))
mean(x, na.rm = TRUE, x = y)
# Remove an argument call_modify(call, na.rm = zap())
mean(x)
# Add a new argument call_modify(call, trim = 0.1)
mean(x, na.rm = TRUE, trim = 0.1)
# Add an explicit missing argument: call_modify(call, na.rm = )
mean(x, na.rm = )
# Supply a list of new arguments with `!!!` newargs <- list(na.rm = NULL, trim = 0.1) call <- call_modify(call, !!!newargs) call
mean(x, na.rm = NULL, trim = 0.1)
# Remove multiple arguments by splicing zaps: newargs <- rep_named(c("na.rm", "trim"), list(zap())) call <- call_modify(call, !!!newargs) call
mean(x)
# Modify the `...` arguments as if it were a named argument: call <- call_modify(call, ... = ) call
mean(x, ...)
call <- call_modify(call, ... = zap()) call
mean(x)
# When you're working with a user-supplied call, standardise it # beforehand in case it includes unmatched arguments: user_call <- quote(matrix(x, nc = 3)) call_modify(user_call, ncol = 1)
matrix(x, nc = 3, ncol = 1)
# `call_match()` applies R's argument matching rules. Matching # ensures you're modifying the intended argument. user_call <- call_match(user_call, matrix) user_call
matrix(data = x, ncol = 3)
call_modify(user_call, ncol = 1)
matrix(data = x, ncol = 1)
# By default, arguments with the same name are kept. This has # subtle implications, for instance you can move an argument to # last position by removing it and remapping it: call <- quote(foo(bar = , baz)) call_modify(call, bar = NULL, bar = missing_arg())
foo(bar = , baz)
# You can also choose to keep only the first or last homonym # arguments: args <- list(bar = NULL, bar = missing_arg()) call_modify(call, !!!args, .homonyms = "first")
foo(bar = NULL, baz)
call_modify(call, !!!args, .homonyms = "last")
foo(bar = , baz)