In riferimento a this question, stavo cercando di capire il modo più semplice per applicare un elenco di funzioni a un elenco di valori. Fondamentalmente, un nidificato lapply
. Ad esempio, ecco applichiamo sd
e mean
di costruire nel set di dati trees
:Applica l'elenco di funzioni all'elenco di valori
funs <- list(sd=sd, mean=mean)
sapply(funs, function(x) sapply(trees, x))
per ottenere:
sd mean
Girth 3.138139 13.24839
Height 6.371813 76.00000
Volume 16.437846 30.17097
ma speravo di evitare l'interno function
e avere qualcosa di simile:
sapply(funs, sapply, X=trees)
che non funziona perché X
corrisponde al primo sapply
invece del secondo. Possiamo farlo con functional::Curry
:
sapply(funs, Curry(sapply, X=trees))
ma speravo forse c'era un modo intelligente per fare questo con posizionale e il nome di corrispondenza che mi manca.
hadley ha scritto un intero capitolo su questo argomento: http://adv-r.had.co.nz/Functional-programming.html#lists-of-functions, dal momento che io non sono più intelligente di quanto io sappia di un modo migliore per farlo – grrgrrbla
Non più semplice, ma carino se si desidera un ordinato data.frame alla fine: 'library (purrr); map_df (funs, ~ map_df (trees, .x), .id = 'statistic') ' – alistaire