Использование троеточия в разработке функций
Не редко среди аргументов функций вы можете встретить ..., в связке с другими именованными аргументами. Это специальный аргумент, который позволяет передавать функции произвольный набор аргументов. Это может быть полезно в следующих случаях:
● Когда точное количество аргументов заранее неизвестно, например при использовании функций lapply(), sum() и т.д..
● Когда вы используете под капотом самописной функции какую то другую функцию, и хотите "прокинуть" в неё произвольный набор аргументов.
Пример 1:
i01 <- function(y, z) {
list(y = y, z = z)
}
i02 <- function(x, ...) {
i01(...)
}
str(i02(x = 1, y = 2, z = 3))
#> List of 2
#> $ y: num 2
#> $ z: num 3
Есть ещё одна, специальная форма обращения к аргументам, переданным в функцию через ..., обращение по номеру аргумента ..N.
Пример 2:
i03 <- function(...) {
list(first = ..1, third = ..3)
}
str(i03(1, 2, 3))
#> List of 2
#> $ first: num 1
#> $ third: num 3
На практике такая форма использования троеточия встречается крайне редко.
Также вы можете использовать list(...), для конвертации набора аргументов в список:
Пример 3:
i04 <- function(...) {
list(...)
}
str(i04(a = 1, b = 2))
#> List of 2
#> $ a: num 1
#> $ b: num 2
Ссылки:
- Информация для поста заимствована из главы 6.6. "... (dot-dot-dot)" книги "Advanced R".
#заметки_по_R