l'applicazione si applicano () per gli elementi della lista profondamente radicate solo
Domanda
I vorrebbe applicare la mia funzione ai soli elementi che sono più in profondità nella struttura della lista.
Per esempio, desidero applicare una certa funzione di elementi di lista di solo secondo ordine. È questo fattibile con applicazione ()?
> str(l)
List of 3
$ :List of 2
..$ : num 5
..$ : num 10
$ :List of 2
..$ : num 15
..$ : num 20
$ :List of 2
..$ : num 25
..$ : num 30
Soluzione
Usa doppia lapply
L <- list(
list(rnorm(10),rnorm(10)),
list(c(rnorm(10),NA),rnorm(10)),
list(rnorm(10),rnorm(10))
)
str(L)
L_out <- lapply(L, lapply, function(x) c(max(x),mean(x), mean(x,na.rm=TRUE)))
str(L_out)
# List of 3
# $ :List of 2
# ..$ : num [1:3] 0.958 0.127 0.127
# ..$ : num [1:3] 0.981 -0.262 -0.262
# $ :List of 2
# ..$ : num [1:3] NA NA -0.443
# ..$ : num [1:3] 1.126 -0.504 -0.504
# $ :List of 2
# ..$ : num [1:3] 1.432 -0.174 -0.174
# ..$ : num [1:3] 1.102 -0.311 -0.311
Altri suggerimenti
Non sapendo "r", ma sono sicuro che è possibile applicare una funzione che applica la funzione. Lasciate che il vostro funktion sia f, poi invece applicare F Scrivi applicare (a f)
In Haskell-ish
data = [[5,10], [15,20], [25,3]]
Supponiamo di voler aggiungere 1 ad ogni numero:
map (map (+1)) data
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow