2011-08-30 19 views
17

Cuando miro a los contenidos de [[.data.frame en mi PC, esto es lo que me sale:" ..1" en el cuerpo de '[[.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> 

me he acostumbrado a ..., pero esta es la primera vez que vi ..1 y ..2. Una búsqueda rápida tanto en R ayuda como en Google devolvió la mayoría de basura, ya que los puntos a menudo se interpretan como marcadores de posición, así que espero que alguien aquí me pueda dar un puntero. ¿O me estoy perdiendo algo terriblemente obvio? ¿De dónde vienen estos y cómo puedo usarlos?

Respuesta

16

Esta es una manera de hacer referencia a los elementos 1º, 2º, ... de la pairlist especial que es .... Entonces ..1 es la forma de referirse al primer elemento de ..., ..2 se refiere al segundo elemento de ... y así sucesivamente.

Esto se menciona en el manual R Internals en la sección de 1.5.2 Dot-dot-dot arguments, el bit correspondiente de la cual es:

El valor de ... es un pairlist (especial) cuyos elementos se denominan mediante los símbolos especiales ..1, ..2 , ... que tienen establecido el bit DDVAL: cuando se encuentra uno de estos, se busca (mediante ddfindVar) en el valor del símbolo ... en el marco de evaluación.

5

Para añadir a la respuesta de Gavin:

También se mencionan brevemente en la página de ayuda de palabras reservadas (?Reserved).

Un ejemplo muy simple de uso es

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