2011-08-30 6 views
17

私は私のPC上[[.data.frameの内容を見てみると、これは私が得るものであるの体内で:私は慣れてきた」..1" 『[[.data.frame』

> get("[[.data.frame") 
function (x, ..., exact = TRUE) 
{ 
    na <- nargs() - (!missing(exact)) 
    if (!all(names(sys.call()) %in% c("", "exact"))) 
     warning("named arguments other than 'exact' are discouraged") 
    if (na < 3L) 
     (function(x, i, exact) if (is.matrix(i)) 
      as.matrix(x)[[i]] 
     else .subset2(x, i, exact = exact))(x, ..., exact = exact) 
    else { 
     col <- .subset2(x, ..2, exact = exact) 
     i <- if (is.character(..1)) 
      pmatch(..1, row.names(x), duplicates.ok = TRUE) 
     else ..1 
     .subset2(col, i, exact = exact) 
    } 
} 
<environment: namespace:base> 

...になりましたが、これは初めて..1..2と判明しました。ドットがしばしばプレースホルダーとして解釈されるので、RのヘルプとGoogleの両方のクイック検索がゴミを返すので、ここの誰かが私にポインタを与えることを望んでいますか?または、私は何かが明らかに何かを欠けている?これらはどこから来て、どのように使用できますか?

答えて

16

これは、...である特別なペアリストの1番目、2番目、...の要素を参照する方法です。したがって、..1は、...の最初の要素を参照する方法です。..2は、...の2番目の要素を参照します。

このセクション1.5.2 Dot-dot-dot argumentsR Internalsマニュアルに記載されている、該当するビットはである:

...の値は、要素の特殊記号によって呼ばれる(特別な)pairlistある..1..2 、... DDVALビットがセットされています:これらのいずれかが発生した場合、評価フレーム内の...シンボルの値で(ddfindVarを介して)検索されます。

5

ギャビンの答えに追加するには:

また、これらは予約語(?Reserved)のヘルプページで簡単に言及されています。

使い方の本当に簡単な例は、

f <- function(...) print(..1) 
f(x = 99) #prints 99 
f()  #throws an error 
です