[R] extract index during execution of sapply

Ben Bolker bolker at ufl.edu
Fri Jun 22 15:23:08 CEST 2007


Christian Bieli <christian.bieli <at> unibas.ch> writes:

> 
> Hi there
> During execution of sapply I want to extract the number of times the 
> function given to supply has been executed. I came up with:
> 
> mylist <- list(a=3,b=6,c=9)
> sapply(mylist,function(x)as.numeric(gsub("[^0-9]","",deparse(substitute(x)))))
> 
> This works fine, but looks quite ugly. I'm sure that there's a more 
> elegant way to do this.
> 
> Any suggestion?
> 
> Christian
> 

   I would love to have an answer to this -- when I run
into this kind of problem I usually end up using mapply:
e.g., suppose I have

mylist <- replicate(5,list(x=runif(10),y=runif(10)),simplify=FALSE)

and I want to plot each element in a different color.  I'd like
to be able to do

plot(0:1,0:1,type="n")
lapply(mylist,plot,col=i)

but instead I do

mapply(function(x,i) points(x,col=i),mylist,1:5)

would it be too ugly to have a special variable called INDEX
that could be used within an sapply/lapply statement?



More information about the R-help mailing list