[R] Multiple if function

Charles C. Berry ccberry at ucsd.edu
Wed Sep 16 04:20:49 CEST 2015


On Tue, 15 Sep 2015, Bert Gunter wrote:

> Thanks to both Davids.
>
> I realize that these things are often a matter of aesthetics -- and
> hence have little rational justification -- but I agree with The Other
> David: eval(parse) seems to me to violate R's soul( it makes R a macro
> language instead of a functional one).
>
> However, mapply(... switch) effectively loops through the frame row by
> row. Aesthetically, I like it; but it seems inefficient. If there are
> e.g. 1e6 rows in say 10 categories, I think Jeff's approach should do
> much better.  I'll try to generate some actual data to see unless
> someone else beats me to it.

Use mapply like this on large problems:

unsplit(
     mapply(
         function(x,z) eval( x, list( y=z )),
         expression( A=y*2, B=y+3, C=sqrt(y) ),
         split( dat$Flow, dat$ASB ),
         SIMPLIFY=FALSE),
     dat$ASB)

Chuck



More information about the R-help mailing list