There is "missing with default" and "missing without default".
If an argument x is missing without a default, then missing(x) is true, if you pass x to another function, it will pass the value of the "missing argument". (which is different than simply being missing!) If an argument x is missing _with_a default, then missing(x) is still true, but if you pass x to another function, the default value is passed, not the missing argument symbol. If you add default arguments to your example, you'll see this effect: f1 <- function(x, y, z){ if(missing(x)) cat("f1: x is missing\n") if(missing(y)) cat("f1: y is missing\n") } f2 <- function(x, y, z){ if(missing(z)) cat("f2: z is missing\n") f1(x, y) } f2() prints f2: z is missing The intersection of default values, and the representation of missing without a default as a symbol yields some unexpected and complex behaviors. Here are a few more fun examples: https://github.com/bedatadriven/renjin/blob/master/tests/src/test/R/test.missing.R Best, Alex On Tue, Oct 1, 2019, 10:27 Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > > There's a StackOverflow question > https://stackoverflow.com/q/22024082/2554330 that references this text > from ?missing: > > "Currently missing can only be used in the immediate body of the > function that defines the argument, not in the body of a nested function > or a local call. This may change in the future." > > Someone pointed out (in https://stackoverflow.com/a/58169498/2554330) > that this isn't true in the examples they've tried: missingness does > get passed along. This example shows it (this is slightly different > than the SO example): > > f1 <- function(x, y, z){ > if(missing(x)) > cat("f1: x is missing\n") > if(missing(y)) > cat("f1: y is missing\n") > } > > f2 <- function(x, y, z){ > if(missing(z)) > cat("f2: z is missing\n") > f1(x, y) > } > > f2() > > which produces > > f2: z is missing > f1: x is missing > f1: y is missing > > Is the documentation out of date? That quote appears to have been > written in 2002. > > Duncan Murdoch > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel