[R] Passing (Optional) Arguments
    Jason Q. McClintic 
    jqmcclintic at stthomas.edu
       
    Tue Mar 25 03:34:14 CET 2008
    
    
  
Dear List:
In short, I am writing a number of functions as building blocks for 
other functions and have some questions about scoping and passing arguments.
Suppose I have functions foo1, foo2, and foo3 such that:
	foo1<-function(a=1,b=TRUE,c=FALSE){#do stuff};
	foo2<-function(x=1,y=FALSE,z=c(1,2,3,4)){#do stuff};
	foo3<-function(lambda,...){lambda*foo1()*foo2()};
I want to be able to pass a,b,c,x,y,z to the functions foo1 and foo2 
though foo3 (whether I define default values or not). How do I do this?
I read a bit in the wiki about problems with partial argument matching 
and argument matching (lesson: make argument names not match truncated 
versions of other argument names in the "target" function).
To get a better feel for things I've been playing with examples such as:
	b<-c(0.25,0.25);
	fun<-function(a=1,...){a*b};
fun() returns 0.25 0.25 as expected.
fun(a=2) returns 0.5 0.5 as expected.
However, fun(b=1) returns 0.25 0.25 when I want to overwrite b with the 
value 1 and have it return 1.
Likewise with
	fun<-function(a=1,...){a*return(b)};
any argument I supply for b seems to be ignored.
I understand as b is not defined within the function when I enter
	fun()
lexical scoping means R looks for b up one level and, finding b, uses it.
Thanks for any/all help.
Sincerely,
Jason Q. McClintic
--
Jason Q McClintic
UST MB 1945
2115 Summit Avenue
St. Paul, MN 55105
jqmcclintic at stthomas.edu
mccl0219 at tc.umn.edu
"It is insufficient to protect ourselves with laws, we must protect 
ourselves with mathematics."--Bruce Schneier
    
    
More information about the R-help
mailing list