Де я можу знайти документацію щодо використання ...функцій? Приклади були б корисними.
Де я можу знайти документацію щодо використання ...функцій? Приклади були б корисними.
Відповіді:
Слово, що використовується для опису, ...- "багатоточия". Знаючи це, слід полегшити пошук інформації про конструкцію. Наприклад, першим зверненням до Google є інше запитання на цьому веб-сайті: Як використовувати функцію багатоточия R під час написання власної функції?
dots, наприклад, сторінка довідки названа, ?dotsа "еліпсис" навіть не згадується на цій сторінці
?dotsце не працює для мене, але ?'...'працює.
Невеликий приклад для початку.
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).
f()щоразу викликається неодноразово з різними аргументами. Запустіть код і перевірте, чи можете ви зрозуміти, що відбувається.
...length()як добре
Вам слід перейти до "Визначення мови 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)для досягнення того самого результату)
trim- це аргумент meanфункції. ...В sapplyє механізмом , trimякі будуть передані mean.
...: R еквівалент введення ключового слова python (def func(**kwargs))