I would like to be able to change a name of column which contains the grouping variable in the data table. I know how to do this when not wrapping into a function, but when I wrap the group by data table operation into a function, I am unable to figure out how to also set the name to truly reflect the grouping variable.
My code:
# load the data table library
library(data.table)
# load sample dataset for reproducible example
mtcars <- data.table(mtcars)
# define a function which would group given
# data table (1st parameter) by given column (2nd parameter)
grouping_function <- function(x, grouping1)
{
x[,
list(mean_disp = mean(disp),
mean_hp = mean(hp)),
.(get(grouping1))]
}
Now, if I run grouping_function(mtcars, "cyl")
I would like to get column names cyl, mean_disp, mean_hp byt what I get is get, mean_disp, mean_hp
EDIT
For one variable the fix seems to be strightforward as suggested by the answer of Roman Lustrik. But when I have two grouping variables, that fix doesn't seem to work:
# load the data table library
library(data.table)
# load sample dataset for reproducible example
mtcars <- data.table(mtcars)
# define a function which would group given
# data table (1st parameter) by given column (2nd parameter)
grouping_function <- function(x, grouping1, grouping2)
{
x[,
list(mean_disp = mean(disp),
mean_hp = mean(hp)),
.(get(grouping1), get(grouping2)]
}
Here, using merely by = list(grouping1, grouping2) or other variants seem to fail.
Can't you just specify
by
?