Где найти документацию по использованию ...функций in? Примеры были бы полезны.
Где найти документацию по использованию ...функций in? Примеры были бы полезны.
Ответы:
Для описания используется слово ...«многоточие». Знание этого должно облегчить поиск информации о конструкции. Например, первое попадание в 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 input (def func(**kwargs))