[R] Using 'by()' in a function

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Fri Apr 28 20:08:58 CEST 2000

Setzer.Woodrow at epamail.epa.gov writes:

> I have a list of dataframes, and want to apply a function to subsets of the rows
> of each dataframe.  It seemed natural to write a function that takes a dataframe
> as an argument, and uses 'by() within it to apply the function to the dataframe
> subsets.  However, I cannot get it to work.  The problem seems to be passing the
> data argument of by() as a function argument.  Is this bug, or am I missing
> something (or both)?

It's a bug: This looks like the culprit

    ans <- eval(substitute(tapply(1:nrow(data), IND, FUNx)), 

That will substitute the unevaluated data argument into the
"tapply(1:nrow(data),...)" where it will not make sense except at top

I think we want 

    ans <- eval(substitute(tapply(NN, IND, FUNx)), data)

(but I didn't test that)

   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list