Let me show a minimal reprex as it is easier than describe and I am not sure why does it happen:
> library(data.table)
> irisdt<-as.data.table(iris)
> var="Sepal.Length"
Next works
> aux <- irisdt[, .(var = min(var)), env = list(var = var), by = Species]
> irisdt[, !c("Sepal.Length")][aux, on = "Species", SLM := var, env = list(var=paste0("i.", var))][]
Sepal.Width Petal.Length Petal.Width Species SLM
<num> <num> <num> <fctr> <num>
1: 3.5 1.4 0.2 setosa 4.3
2: 3.0 1.4 0.2 setosa 4.3
3: 3.2 1.3 0.2 setosa 4.3
4: 3.1 1.5 0.2 setosa 4.3
5: 3.6 1.4 0.2 setosa 4.3
---
146: 3.0 5.2 2.3 virginica 4.9
147: 2.5 5.0 1.9 virginica 4.9
148: 3.0 5.2 2.0 virginica 4.9
149: 3.4 5.4 2.3 virginica 4.9
150: 3.0 5.1 1.8 virginica 4.9
But if I do not use auxiliary variable aux and I include the summarised datatable in i, I get
> irisdt[, !c("Sepal.Length")][irisdt[, .(var = min(var)), env = list(var = var), by = Species], on = "Species", SLM := var, env = list(var=paste0("i.", var))]
Error in .checkTypos(e, names_x) :
Object 'i.Sepal.Length' not found amongst [Sepal.Width, Petal.Length, Petal.Width, Species]
Let me show a minimal reprex as it is easier than describe and I am not sure why does it happen:
Next works
But if I do not use auxiliary variable
auxand I include the summarised datatable ini, I get