Apply function to .SDcols and group by
capture_dput <- function(x){
paste(capture.output(dput(x)), collapse = '')
}
define_vars <- function(...) {
vs <- lazyeval::lazy_dots(...)
varnames <- unname(sapply(vs, function(v) as.character(v$expr)))
dputs <- sapply(vs, function(v) {
v$expr <- substitute(capture_dput(x), list(x = v$expr))
lazyeval::lazy_eval(v)
})
paste(varnames, dputs, sep = " <- ")
}
my_var = list(a = c(1,2,3), b = "test")
define_vars(my_var)
cols_to_scale <- grep('^(AVG|MIN|MAX|RNG|LST|FST)',colnames(atab), value = T)
atab[,
(cols_to_scale) := lapply(.SD, function(col){scale(col)[,1]}),
.SDcols = cols_to_scale,
by = LINE]