web-dev-qa-db-ja.com

関数での `...`(3ドットまたはドットドットドット)の使用

関数での...の使用に関するドキュメントはどこにありますか?例が役立ちます。

80

...の説明に使用されるWordは「省略記号」です。これを知ることで、構造に関する情報の検索が容易になります。たとえば、Googleで最初にヒットしたのは、このサイトの別の質問です。 独自の関数を作成するときにRの省略記号機能を使用するには?

72
John Zwinck

あなたが始めるための小さな例。

f <- function(x, ...)
{
  dots <- list(...)                   #1
  if(length(dots) == 0) return(NULL) 
  cat("The arguments in ... are\n")
  print(dots)
  f(...)                              #2
}

f(1,2,3,"a", list("monkey"))

関数fは、最初の入力引数を除くすべてをEllipsis変数に格納します。コンテンツにアクセスするには、リストに変換するのが最も簡単です(1)。ただし、主な用途はサブ関数に引数を渡すためであり、変換は必要ありません(2)。

50
Richie Cotton

「R言語の定義」のセクション2.1.9ドットドットドット 。 Rインストールにバンドルされています。インタラクティブセッションでhelp.start()を実行してHTMLヘルプを表示し、The R Language Definitionリンクをクリックします。 [〜#〜] pdf [〜#〜] または [〜#〜] html [〜#〜] をメインサイトからも使用できます。

とにかく、_..._は、関数の未指定の仮引数と一致するために使用されます。

_args(sapply)                                                                                                               
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)                                                                    
NULL   

sapply(mtcars, mean, trim = .5)                                                                                            
    mpg     cyl    disp      hp    drat      wt    qsec      vs      am    gear                                              
 19.200   6.000 196.300 123.000   3.695   3.325  17.710   0.000   0.000   4.000                                              
   carb                                                                                                                      
  2.000 
_

ご覧のとおり、sapply関数の正式な引数として指定されていませんが、_trim = .5_を渡しました。

(この例は簡単なことに注意してください、sapply(mtcars, median)を使用して同じ結果を得ることができます)

19
aL3xa