[R] How to modify the values of the parameters passing via ...

Rui Barradas ruipbarradas at sapo.pt
Fri Aug 31 00:58:35 CEST 2012


Hello,

You could see what is fun1 receiving with this modification meant for 
debugging:

fun1 <-function(x, y, z=10){
     print(match.call())
     x + y + z
}

Anyway, there is s standard way of dealing with argument '...' when one 
needs to know what was passed.
Include dots <- list(...) at the beginning of fun2 and then use it when 
necessary:

fun1 <-function(x, y, z=10){x + y + z}

fun2 <-function(aa, ...) {
   dots <- list(...)
   a <- fun1(x=aa, y=5)    # works well  a=1+5+10=16
   b <- fun1(x=aa, ...)    # works well  b=1+4+8=13
   y <- 0                  # it will not affect values passed using ...
   c <- fun1(x=aa, ...)    # works well but c = 1+4+8=13
   d <- fun1(x=aa, y=5, dots$z)  # works well  d=1+5+8=14
   c(a, b, c, d)
}

fun2(aa=1, y=4, z=8)
[1] 16 13 13 14


Also, to end statements with ';' is a C language tique, R doesn't need it.
(Nor it hurts.)

Hope this helps,

Rui Barradas

Em 30-08-2012 23:07, Zhiqiu Hu escreveu:
> Dear Friends,
>
> Let's assume there are three parameters that were passed into fun1. In
> fun1, we need to modify one para but the remains need to be untouched. And
> then all parameters were passed into fun2. However, I have failed to
> achieve it.
>
> Please see the following code.
>
> ##########################################
> fun1 <-function(x, y, z=10) {x+y+z;}
>
> fun2 <-function(aa, ...) {
>    a=fun1(x=aa, y=5);    # works well  a=1+5+10=16
>    b=fun1(x=aa, ...);       # works well  b=1+4+8=13
>    y=0                          # it will not affect values passed using ...
>    c=fun1(x=aa, ...)        # works well but c = 1+4+8=13
>
> #   Some time we may only want to use parts of the inputed variables
> #   we only want to modify y
>    d=fun1(x=aa, y=5, ...);  #error : formal argument "y" matched by multiple
> actual arguments
> #How can I get the result   d=1+5+8=14?
>
>    c(a, b, c)
> }
>
> fun2(x=1, y=4, z=8)
> ##########################################
>
> I will appreciate it if you would give me any suggestions.
>
> Best wishes,
>
> Zhiqiu
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.




More information about the R-help mailing list