Quando si applica una funzione con più variabili di uscita (ad esempio una lista) a un sottoinsieme di un data.table, perdo i nomi delle variabili. C'è un modo per trattenerli?mantenendo i nomi delle colonne in lapply (.SD, ...) per data.table R
library(data.table)
foo <- function(x){
list(mn = mean(x), sd = sd(x))
}
bar <- data.table(x=1:8, y=c("d","e","f","g"))
# column names "mn" and "sd" are replaced by "V1" and "V2"
bar[, sapply(.SD, foo), by = y, .SDcols="x"]
# column names "mn" and "sd" are retained
bar_split <- split(bar$x, bar$y)
t(sapply(bar_split, foo))
come su 'bar [, c ("mn", "SD"): = sapply (.SD, foo),. (y) ,. SDcols = "x"] ' – MichaelChirico
Bella domanda. Sarei interessato a farlo per funzioni che restituiscono più di una semplice lista di scalari, qualcosa come 'foo2 <- function (x) list (mn = mean (x), tab = table (x))'. – Frank