You could try using the non-formula interface to aggregate. Note that the following two calls to aggregate are equivalent but the second (using the non-formula interface) makes the response column a variable:
> df <- data.frame(Y1=1:10, Y2=101:110, Group=rep(letters[1:3], c(3,3,4))) > aggregate(Y1 ~ Group, data=df, FUN=sum) Group Y1 1 a 6 2 b 15 3 c 34 > responseColumn <- "Y1" > aggregate(df[responseColumn], by=df["Group"], FUN=sum) Group Y1 1 a 6 2 b 15 3 c 34 Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Sep 5, 2014 at 10:57 AM, Dale Garman <garman.d...@gmail.com> wrote: > How can I parameterize the function call to aggregate() below with colx (a > character string) in the following code? That is, replace both if > statements with aaa <- aggregate(colx_something, data=tidy[grpyrs,],sum). > I've tried a couple of ideas for "colx_something" but get an R-error each > time. Been using R for 5-6 months and want to expand my knowledge. > > explain_causes <- function(spread, colx, peakyears) { > for(i in peakyears) { > grpyrs <- tidy$year >= (i-spread) & tidy$year <= (i+spread) > if(colx == "harm") > aaa <- aggregate(harm ~ EVTYPE, data=tidy[grpyrs,],sum) > if(colx == "damage") > aaa <- aggregate(damage ~ EVTYPE, data=tidy[grpyrs,],sum) > . > . > . > } > } > > # "harm" is a column var in tidy dataframe > explain_causes(0,"harm",c(1953,1965,1974,1979,1984,1995,1998,2011)) > > # "damage" is a column var in tidy dataframe > explain_causes(0,"damage",c(2005,2006)) > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.