Has a Formal Argument been Set or is it Missing?
missingCh.RdmissingCh can be used to test whether a value was specified
as an argument to a function. Very much related to the standard R
function missing, here the argument is given by its
name, a character string.
As missingCh() calls missing(), do consider the
caveats about the latter, see missing.
Usage
missingCh(x, envir = parent.frame())Arguments
- x
a
characterstring.- envir
a (function evaluation)
environment, in which the variable namedxis to be “missing”.
Value
a logical indicating if the argument named x is
missing in the function “above”, typically the
caller of missingCh, but see the use of envir in the
vapply example.
Examples
tst1 <- function(a, b, dd, ...) ## does not work an with argument named 'c' !
c(b = missingCh("b"), dd = missingCh("dd"))
tst1(2)#-> both 'b' and 'dd' are missing
#> b dd
#> TRUE TRUE
tst1(,3,,3)
#> b dd
#> FALSE TRUE
## b dd
## FALSE TRUE -- as 'b' is not missing but 'dd' is.
Tst <- function(a,b,cc,dd,EEE, ...)
vapply(c("a","b","cc","dd","EEE"), missingCh, NA, envir=environment())
Tst()
#> a b cc dd EEE
#> TRUE TRUE TRUE TRUE TRUE
## TRUE ... TRUE -- as all are missing()
Tst(1,,3)
#> a b cc dd EEE
#> FALSE TRUE FALSE TRUE TRUE
## a b cc dd EEE
## FALSE TRUE FALSE TRUE TRUE
## ..... .....
## as 'a' and 'cc' where not missing()
## Formal testing:
stopifnot(tst1(), !tst1(,3,3), Tst(),
Tst(1,,3, b=2, E="bar") == c(0,0,1,0,0))
## maybe surprising that this ^^ becomes 'dd' and only 'cc' is missing