ryszard.czerminski@pharma.novartis.com
2004-Mar-11 20:03 UTC
[R] how to pass extra parameters using call() or similar mechanism ?
I am trying to write a function, which would allow to call various methods and would pass to them extra arbitrary parameters. My first attempt was to use call() as illustrated below, but apparently '...' cannot be used in such context. How can this be achieved ? Best regards, Ryszard> myfun <- function(method, x, ...) {+ v <- eval(call(method, x, ...)) + }> method = 'sqrt' > myfun('sqrt',2)Error in eval(call(method, x, ...)) : ... used in an incorrect context> eval(call(method, 2, ...))Error in eval(call(method, 2, ...)) : ... used in an incorrect context> eval(call(method, 2))[1] 1.414214
Tony Plate
2004-Mar-12 00:23 UTC
[R] how to pass extra parameters using call() or similar mechanism ?
If you want to use call() with a list of arguments, the easiest way I know of is to use do.call() (if anyone knows a better way, please say so!) > myfun2 <- function(method, x, ...) { + method.call <- do.call("call", list(method, x, ...)) + eval(method.call) + } > myfun2('sqrt',2) [1] 1.414214 > If you don't need the call object, you can just use do.call() directly (this is the same as Andy Liaw's suggestion): > myfun <- function(method, x, ...) { + do.call(method, list(x, ...)) + } > myfun('sqrt',2) [1] 1.414214 At Thursday 01:03 PM 3/11/2004, ryszard.czerminski at pharma.novartis.com wrote:>I am trying to write a function, which would allow to call various methods >and would pass to them extra arbitrary parameters. >My first attempt was to use call() as illustrated below, but apparently >'...' cannot be used in such context. > >How can this be achieved ? > >Best regards, > >Ryszard > > > myfun <- function(method, x, ...) { >+ v <- eval(call(method, x, ...)) >+ } > > method = 'sqrt' > > myfun('sqrt',2) >Error in eval(call(method, x, ...)) : ... used in an incorrect context > > eval(call(method, 2, ...)) >Error in eval(call(method, 2, ...)) : ... used in an incorrect context > > eval(call(method, 2)) >[1] 1.414214 > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://www.stat.math.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html