I have stumbled across some behaviour in R that I really can't place,
and that makes coding a bit tricky. I know that I can work around it
when explicitly checking for missing arguments, but still...
I have two functions. I have a first function based on paste
fun1 <- function(x,y){
print(missing(y))
paste(x,'X',sep=y)
}
If I try this function without specifying `y`, I get the (expected)
error message:
[1] TRUE
Error in paste(x, "X", sep = y) :
argument "y" is missing, with no default
The second one with round :
fun2 <- function(x,y){ print(missing(y)) round(x,digits=y) }
If I try this function without specifying `y`, it works unexpectedly
whereas it shouldn't :
> fun2(100.1) [1] TRUE [1] 100
In my view, fun1 should definitely give the error message as well, as
it is not intended to have a default behaviour when y is missing.
Still, the round() function ignores the fact y is missing. Is this by
design, is there a check missing in round, or is something else going
on that I am overlooking?