ある関数の引数に省略記号である三連ドット(…)を持つかどうかを判定する関数を作成しましたので共有いたします。

判定する関数は次になります。


is_dots <- function(func) {
  if (!is.function(func)) {
    stop("Argument is not a function.")
  }
  return(any(is.element(names(as.list(args(func))), "...")))
}

検証用に適当な関数を作成します。


sample_func1 <- function(a) {}
sample_func2 <- function(a, ...) {}

作成したis_dots()関数に検証用の関数を適用してみます。


> print(is_dots(sample_func1))
[1] FALSE

> print(is_dots(sample_func2))
[1] TRUE

うまく動いていることが確認できました。

R 関数の引数が省略記号(…)を持つかどうかを判定する方法