On 11-10-07 4:39 AM, Pascal A. Niklaus wrote:
Hi all,
Is there a way to modify the optional arguments (...) passed to a
function, so that these can be passed in modified form to a subsequent
function call? I checked "Programming with Data" but could not find a
solution there.
Not as such, but you get the same result using do.call. For example:
test <- function(x, y, ...) {
args <- list(x=x, y=y, ...)
if (!hasArg(xlab)) args <- c(args, list(xlab="My label"))
do.call(plot, args)
}
This has a disadvantage that the argument to plot has already been
evaluated, so the y label shows the value rather than the expression
test() received for y. Presumably you can construct a call and evaluate
it to get the labels you want; the tools are quote(), bquote(),
substitute(), etc.
Duncan Murdoch
What I'd like is something along these lines:
test<- function(x,y,...) {
if(!hasArg(xlab)) { ___add xlab to ...___ }
if(hasArg(xlab)) { ___remove xlab from ...___ } # alternative
plot(x,y,...)
}
Of course, I could use separate calls, like
if(hasArg(xlab)) plot(x,y,...) else plot(x,y,xlab="label",...)
but this gets complicated if there is more than one such case to consider.
Thanks
Pascal
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.