1. ホーム
  2. r

[解決済み】R関数でオプション引数を指定する "正しい "方法

2022-04-12 21:44:14

質問

Rでオプションの引数を持つ関数の書き方として何が正しいのかに興味があります。 このトピックに関する適切な(公式の)見解が見つかりませんでした。

今まで、オプションの引数はこのように書いていました。

fooBar <- function(x,y=NULL){
  if(!is.null(y)) x <- x+y
  return(x)
}
fooBar(3) # 3
fooBar(3,1.5) # 4.5

この関数は、以下の場合、単にその引数を返します。 x が提供されます。これはデフォルトの NULL を指定し、もしその引数が NULL というように、2つの数値を足し算する関数です。

あるいは、次のように関数を書くこともできます(第2引数は名前で指定する必要がありますが、次のように書くこともできます)。 unlist(z) または z <- sum(...) の代わりに)。

fooBar <- function(x,...){
  z <- list(...)
  if(!is.null(z$y)) x <- x+z$y
  return(x)
}
fooBar(3) # 3
fooBar(3,y=1.5) # 4.5

個人的には、最初のバージョンの方が好きです。しかし、どちらにも良いところと悪いところがあると思います。最初のバージョンはエラーが少し少ないですが、2番目のバージョンは任意の数のオプショナルを組み込むのに使えるかもしれません。

Rでオプション引数を指定する正しい方法はありますか?今のところ、私は最初のアプローチに落ち着いていますが、どちらもちょっとハチャメチャな感じがすることがあります。

解決方法は?

を使用することもできます。 missing() を使用して、引数 y が供給された。

fooBar <- function(x,y){
    if(missing(y)) {
        x
    } else {
        x + y
    }
}

fooBar(3,1.5)
# [1] 4.5
fooBar(3)
# [1] 3