Это, наверное, вопрос стиля. Вот один из вариантов сохранения функций в списке и передачи date_col
в виде строки в .SDcols
:
funlist <- list(date_quarter=yearquarter,
date_week=function(x) format(x, "%G W%V"),
date_month=yearmonth,
date_year=year)
determine_date_aggregations <- function(data, date_col="FIN_DATE", out_col="finish"){
data[, paste(out_col, names(funlist), sep="_") :=
lapply(funlist, function(f) f(.SD[[1L]])), .SDcols=date_col]
}
или использование set
вместо :=
:
determine_date_aggregations <- function(data, date_col="FIN_DATE", out_col="finish") {
for (f in names(funlist)) {
set(data, j=paste(out_col, f, sep="_"),
value=funlist[[f]](data[[date_col]]))
}
}