Избегайте дублирования аргументов, прошедших через (...)

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

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

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

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

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

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

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

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

Ответы

Ответ 1

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

f <- function(x, ...) {
    defaults <- list(xlab = "x", ylab = "y")
    args <- modifyList(defaults, list(x = x, ...))
    do.call("plot", args)
}