Я хочу создать функцию-оболочку, заменяющую некоторые аргументы по умолчанию.R: использование аргумента с многоточием (...)
Здесь суть проблемы я борюсь с:
Error in localWindow(xlim, ylim, log, asp, ...) :
formal argument "cex" matched by multiple actual arguments
Теперь немного контекста. Предположим, что я определить функцию-обертку для сюжета, как это:
myplot <- function(x, ...) {
plot(x, cex= 1.5, ...)
}
Если я позвоню myplot(1:10, cex= 2)
я получаю вышеуказанную ошибку. Я знаю, что могу превратить ...
в список
l <- list(...)
и тогда я мог бы сделать
if(is.null(l[["cex"]])) l[["cex"]] <- 2
Однако, как я могу «вставить» этот список обратно в многоточие аргумент? Нечто подобное (я знаю, что это не будет работать):
... <- l
EDIT: Я мог бы использовать по умолчанию в myplot
определения (как это было предложено в ответ от @Thomas), но я не хочу: интерфейс функции будет загромождать. Я предполагаю, что я мог определить, вспомогательную функцию, как это:
.myfunchelper <- function(x, cex= 2.0, ...) {
plot(x, cex= cex, ...)
}
myfunc <- function(x, ...) {
.myfunchelper(x, ...)
}
Но (я) она менее изящна и (б) не удовлетворяет мое любопытство.
Да, но это именно то, чего я хочу избежать. Реальная проблема сложна, и я не хочу помещать значения по умолчанию в определение вызова функции - уже существует слишком много аргументов. – January
Я обновил данные на основе ответов: http://stackoverflow.com/questions/7028385/can-i-remove-an-element-in-dot-dot-dot-and-pass-it-on/7028786# 7028786 – Thomas