2011-08-30 13 views
17

Kiedy patrzę na zawartość [[.data.frame na moim komputerze, to co mam:”..1" w ciele«[[.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> 

stałam używany do ..., ale po raz pierwszy zobaczyłem ..1 i ..2. Szybkie wyszukiwanie zarówno w pomocy R, jak i Google zwróciło głównie śmieci, ponieważ kropki są często interpretowane jako symbole zastępcze, więc mam nadzieję, że ktoś tutaj może dać mi wskazówkę? Czy może brakuje mi czegoś strasznie oczywistego? Skąd się biorą i jak z nich korzystać?

Odpowiedz

16

To jest sposób na odniesienie do 1., 2., ... elementów specjalnej pary, która jest .... Więcjest sposobem na odniesienie do pierwszego elementu ..., ..2 odnosi się do drugiego elementu ... i tak dalej.

tę podano w podręczniku R Internals w przekroju 1.5.2 Dot-dot-dot arguments, odpowiedni kawałek, który jest:

Wartość ... oznacza (specjalne) pairlist której elementy określa się za pomocą specjalnych symboli ..1, ..2 , ... które mają ustawiony bit DDVAL: gdy napotkany zostanie jeden z nich, zostanie on wyświetlony (poprzez ddfindVar) w wartości symbolu ... w ramce oceny.

5

Aby dodać odpowiedź Gavina:

krótko wspomniano są one również na stronie pomocy dla słów zastrzeżonych (?Reserved).

bardzo prosty przykład użycia

f <- function(...) print(..1) 
f(x = 99) #prints 99 
f()  #throws an error 
Powiązane problemy