This worked perfectly, thank you! On Fri, Feb 27, 2015 at 10:47 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
> On 27/02/2015 1:18 PM, Brian Trautman wrote: > > This should be a simple question, but I am at my wits end. > > > > dt<-data.table(a=rep(1:10, 26), b=1:260, c=rep(1:2, 130)) > > > > sumvar <- 'mysum' > > bvar <- 'b' > > > > dt_min <- dt[, list(sumvar = sum(get(bvar))), by=list(a)] > > print(dt_min) > > > > I want the function to return two variables, "a" and "mysum". However, > it > > instead returns "a" and "sumvar", rather than evaluating "sumvar". > > > > If I try replacing it with "get(sumvar)" or "eval(sumvar)", R just throws > > an error. What am I missing? > > > > a sumvar > > 1: 1 3276 > > 2: 2 3302 > > 3: 3 3328 > > 4: 4 3354 > > 5: 5 3380 > > 6: 6 3406 > > 7: 7 3432 > > 8: 8 3458 > > 9: 9 3484 > > 10: 10 3510 > > I don't know the data.table function, but > > list(sumvar = sum(get(bvar))) > > will produce a list with one element named sumvar, holding the sum of > values of a variable named 'b'. If you want that element to be named > 'mysum', you could change it at the end, or construct that list as > > structure(list(sum(get(bvar))), names=sumvar) > > i.e. the full expression would be > > dt_min <- dt[, structure(list(sum(get(bvar))), names=sumvar), by=list(a)] > > The idea is that structure() produces list(sum(get(bvar))) with > attribute "names" set to the contents of sumvar. > > Duncan Murdoch > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.