Change default arguments of an R function at runti

2019-04-06 09:53发布

问题:

Is it possible to change the default values of formal parameters in an R function at runtime?

Let's assume, we have the function

f <- function(x=1) { 
    ...
}

can I somehow change the default value of x from 1 to, say, 2?


Thanks in advance,
Sven

回答1:

Yes, the Defaults package allows you to do this.



回答2:

An alternative (shown in a different SO post) is to use the formals function, e.g.:

formals(f) <- 2



回答3:

As the Defaults package is no longer available from CRAN, you can use default.

As an example:

x <- list(a = 1, b = 2, c = 3)
default::default(unlist) <- list(use.names = FALSE)
unlist(x)
#> [1] 1 2 3

unlist <- default::reset_default(unlist)
unlist(x)
#> a b c 
#> 1 2 3

Created on 2019-03-22 by the reprex package (v0.2.0.9000).



标签: r reflection