Для пользователей Python, изучающих R, быстрый ответ будет заключаться в том, что ...это R-эквивалент ключевого слова python input ( def func(**kwargs))
Функция,, fсохраняет все входные аргументы, кроме первого, в переменной с многоточием. Для доступа к его содержимому проще всего преобразовать его в список (1). Однако в основном используется для передачи аргументов подфункциям, что не требует преобразования (2).
@JiapengZhang Это пример рекурсивной функции. f()вызывается повторно каждый раз с разными аргументами. Запустите код и посмотрите, сможете ли вы понять, что происходит.
Ричи Коттон
2
Это было бы отличный пример , чтобы продемонстрировать , ...length()как хорошо
MichaelChirico
19
Вам следует перейти к «Определению языка 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.2006.000196.300123.0003.6953.32517.7100.0000.0004.000
carb
2.000
Как видите, я прошел, trim = .5хотя это не указано как формальный аргумент sapplyфункции.
(обратите внимание, что этот пример тривиален, вы можете использовать sapply(mtcars, median)для достижения того же результата)
...
это R-эквивалент ключевого слова python input (def func(**kwargs)
)Ответы:
Для описания используется слово
...
«многоточие». Знание этого должно облегчить поиск информации о конструкции. Например, первое попадание в 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
.