Обложка канала

R4marketing | канал Алексея Селезнёва | Язык R

Автор канала Алексей Селезнёв, руководитель отдела аналитики в Netpeak, автор R пакетов: ryandexdirect, rfacebookstat и др. В канале публикуются статьи, доклады, новости, заметки по языку R.

R4marketing | канал Алексея Селезнёва | Язык R

4 года назад
Открыть в
​​Использование троеточия в разработке функций Не редко среди аргументов функций вы можете встретить ..., в связке с другими именованными аргументами. Это специальный аргумент, который позволяет передавать функции произвольный набор аргументов. Это может быть полезно в следующих случаях: ● Когда точное количество аргументов заранее неизвестно, например при использовании функций 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