引数があったりなかったりする処理

今まで使ったことなかった。引数が存在しているか否かはmissing関数で判定するということだ。関数のデフォルト引数との使い分けをどうしたらいいのかはわからない。

f <- function(x, y)
{
  if(missing(y)){return(x)}
  if(missing(x)){return(2*y)}
  x + y
}

これで、二変数関数でも一変数関数のように処理することができる。

> f(21)
[1] 21
> f(y=21)
[1] 42
> f(21, 32)
[1] 53

・・・っていうのを

みて気が付いた。