Jim Lemon wrote:
On 11/06/2009 05:30 AM, Lanna Jin wrote:
Hey all,

I feel like the solution to this problem should be relatively simple, but
for some reason I can't find answers or come up with my own solution.

Given the dataframe:
(SpA and SpB not important, want to look at distribution of cooccurance for
each year)

Year SpA SpB Coocc
2000  0
2000  2
2000  1
2001  8
2001  2
2001  0
2001  0
2002  1
2002  2

How can I apply different functions to the Coocc of each year?
(Note: Different lengths for each year, ie,
length(Year==2000)!=length(Year==2001))
For example, if Year==2000, function(x) x/146; if Year=2001, function(x)
x/237; etc.

I've figured out the long convoluted way, but since I plan to operate
numerous transformations on the different years, is there some way to solve
this in just a few steps?
Hi Lanna,
Perhaps if you define your different functions like this:

transfun2000<-function(x) x/146
transfun2001<-function(x) x/237

and then write a function like this:

mytrans<-function(x) {
 yearlabels<-unique(x$Year)
 nyears<-length(yearlabels)
 transcooc<-rep(NA,nyears)
 for(i in 1:nyears) {
  cooc<-somefunction(x[x$Year == yearlabels[i],])
  transcooc[i]<-do.call(paste("transfun",yearlabels[i],sep=""),...)
 }
 return(transcooc)
}
>
although this is largely guesswork.

Why not simply one function that uses the year as an argument and switch() on the year inside? Seems to be somewhat shorter and less errpr prone at the end.

Best,
Uwe Ligges


Jim

______________________________________________
R-help@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.

______________________________________________
R-help@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.

Reply via email to