関数での `…`(3ドットまたはドットドットドット)の使用[重複]


84

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


3
Rを学習しているPythonユーザーの場合、簡単な答えは...、Pythonのキーワード入力(def func(**kwargs))に相当するRです
Anna

回答:


75

説明に使用される単語...は「省略記号」です。これを知っていると、構成に関する情報の検索が簡単になります。たとえば、Googleでの最初のヒットは、このサイトの別の質問です。独自の関数を作成するときにRの省略記号機能を使用するにはどうすればよいですか。


3
実際にRでの正式名称は、dotsヘルプページの名前は、例えば?dotsおよび「省略記号は」偶数ページに記載されていない
MichaelChirico

ヘルプファイルに関して?dotsは、私には機能しませんが、?'...'機能します。
coip

54

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

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は、最初の入力引数を除くすべてを省略記号変数に格納します。その内容にアクセスするには、リストに変換するのが最も簡単です(1)。ただし、主な用途はサブ関数に引数を渡すことであり、変換は必要ありません(2)。


なぜ#2で同じf関数をもう一度呼び出すのですか?
Jiapeng Zhang 2018

1
@JiapengZhangこれは再帰関数の例です。f()毎回異なる引数で繰り返し呼び出されます。コードを実行して、何が起こっているのか理解できるかどうかを確認します。
リッチーコットン

2
これは、実証するための偉大な例だろう...length()としても
MichaelChirico

19

「R言語の定義」のセクション2.1.9ドットドットドットに進む必要があります。Rインストールにバンドルされています。help.start()インタラクティブセッションで実行してHTMLヘルプを表示し、[ R言語定義]リンクをクリックします。メインサイトから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 

ご覧のとおりtrim = .5sapply関数の仮引数として指定されていませんが、合格しました。

(この例は簡単であることに注意してください。sapply(mtcars, median)同じ結果を達成するために使用できます)


1
指定されていない場合、それが合法または有効であることをどのようにして知ることができますか?
qed 2013

@qedtrimmean関数の引数です。...中にsapplyするためのメカニズムですtrimに渡されますmean
リッチーコットン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.