Что означают ..1 и ..2 в R?

Цитата из определения языка R:

Обратите внимание, что идентификаторы, начинающиеся с точки, по умолчанию не перечислены функцией ls, а «...» и «..1», «..2» и т. д. являются специальными.

Следующие идентификаторы имеют специальное значение и не могут использоваться для имен объектов, если в противном случае повторяется функция while для следующего разрыва TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_ ... ..1 ..2 и т. д.

Однако он не дает никаких дополнительных подробностей. Кто-нибудь может уточнить?


person qed    schedule 25.10.2014    source источник


Ответы (1)


Они используются для позиционного извлечения значений из аргумента ... функции. См. пример ниже:

myfun <- function(...) {
   list(a = ..1, b = ..2, c = ..3)
}

myfun(1,2,3)
# $a
# [1] 1
# $b
# [1] 2
# $c
# [1] 3

myfun(3,2,1)
# $a
# [1] 3
# $b
# [1] 2
# $c
# [1] 1

myfun(1:5, "hello", letters[1:3])
# $a
# [1] 1 2 3 4 5
# $b
# [1] "hello"
# $c
# [1] "a" "b" "c"

Это использование становится очевидным, если вы попытаетесь вызвать один из них из консоли:

> ..1
Error: ..1 used in an incorrect context, no ... to look in
person Thomas    schedule 25.10.2014
comment
Хороший ответ. Не вижу, где это может быть полезно. +1 - person Tyler Rinker; 25.10.2014
comment
Пример есть в methods:::rbind . - person G. Grothendieck; 25.10.2014