[R] question on function arguments

baptiste Auguié ba208 at exeter.ac.uk
Mon Feb 18 10:53:39 CET 2008


Hi,

I have two small issues with my R code, no big deal but curiosity  
really. Here is a sample code,


>
> x <- rnorm(1:10)
>
> foo <- function(a = 1, b = list(x = c(1:10), y = c(1:10))){
> 	
> 	for (ii in seq(along=b$y)){
> 		
> 		print(x[ii] + b$x[ii])
> 	}
> 	
> 	
> }
>
> foo() # default OK
>
> foo(b=list(x=1, y=c(1:10))) # only the first term works
>
> foo(b$y = 1:5) # error
>

In the last call, i wish to use all default arguments but b$y (that  
is, using the default a and b$x). Is this possible?

The second call is more related to indices: i would like my argument b 
$x to be either a vector (default), or a scalar. In the latter, the  
loop b$x[ii] breaks when i would like it to recycle the single value.  
I can check the length of b$x with a "if" statement, but it becomes  
intricate when several arguments have this option of being vector or  
scalar. Is there a way to use b$x that would work in both cases?


Many thanks,

baptiste

_____________________________

Baptiste Auguié

Physics Department
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag
http://projects.ex.ac.uk/atto



More information about the R-help mailing list