Использование нескольких аргументов эллипсов в R - PullRequest
11 голосов
/ 22 февраля 2011

Возможно ли иметь несколько аргументов с многоточием в R-функции?Упрощенная версия того, что я пытаюсь сделать:,Кто-нибудь знает, возможно ли что-то подобное?Я много искал для этого, но строка поиска типа "R ..." на самом деле не очень полезна;)

Ответы [ 2 ]

12 голосов
/ 22 февраля 2011

Вы можете сделать что-то похожее на ваш второй выбор, если вы используете do.call, что позволяет передавать аргументы функции в виде списка.Например, передать axesarg в виде списка, а затем в вашей функции: do.call(axes,axesarg) и т. Д.

Например:

outer_fxn <- function(inner_args=list(), ...) {
    do.call(inner_fxn, inner_args)
}

inner_fxn <- function(...) {
    # do stuff
}

# function call
outer_fxn(inner_args=list(a=1, b=2), outer_arg1=3, etc)

В приведенном выше описании любые аргументы, которые должны обрабатываться inner_fxn ... должно быть передано в списке inner_args.Аргументы outer_fxn ... обрабатываются как обычно.

3 голосов
/ 22 февраля 2011

Первый показанный способ не поддерживается, потому что у парсера нет возможности узнать, в какой набор точек звонящий хочет ввести аргумент.

Вы можете захватить точки в список иработайте оттуда с чем-то вроде:

mydots <- list(...)

Затем вы можете делать копии, удалять элементы, которые не подходят для вызываемой вами функции, а затем использовать do.call (как уже упоминалось) для вызова вашегоfunction.

Второй подход может быть чище, если вы думаете, что вызывающая сторона может посылать разные значения разным функциям с одинаковым именем аргумента.Снова используйте do.call для передачи списка аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...