Избегайте дублирования аргументов, переданного через (...) - PullRequest
15 голосов
/ 20 декабря 2011

У меня есть функция

somefun <- function(someparameters , ...) { plot(stuff, ...)}

Теперь я хотел бы предоставить некоторые значения по умолчанию для plot в случае, если пользователь не указал эти аргументы.(т.е. xlab="").

Как мне предоставить набор параметров графика по умолчанию, но при этом разрешить пользователю переопределять эти аргументы?Поскольку, если один и тот же аргумент вводится дважды, R выдаст ошибку: формальный аргумент, совпадающий с несколькими фактическими аргументами.

Я знаю, что могу передать все эти опции через мою функцию

somefun <- function(someparameters, main, xlab, ylab, xlim....)

но я бы предпочел этого не делать.

Есть ли какое-нибудь простое и удобное решение для достижения этой цели?

1 Ответ

20 голосов
/ 21 декабря 2011

Попробуйте modifyList используется следующим образом:

f <- function(x, ...) {
    defaults <- list(xlab = "x", ylab = "y")
    args <- modifyList(defaults, list(x = x, ...))
    do.call("plot", args)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...