Где я могу найти документацию об использовании ...
в функциях? Примеры были бы полезны.
Использование функций `...` (трехточечная или точка-точка) в функциях
Ответ 1
Слово, используемое для описания ...
, - это "многоточие". Знание этого должно облегчить поиск информации о конструкции. Например, первым хитом в Google является еще один вопрос на этом сайте: Как использовать функцию многоточия R при написании собственной функции?
Ответ 2
Небольшой пример, чтобы вы начали.
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).
Ответ 3
Вы должны перейти к "Определение языка 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 = .5
, хотя он не был указан как формальный аргумент функции sapply
.
(обратите внимание, что этот пример тривиален, вы можете использовать sapply(mtcars, median)
для достижения того же результата)