l'applicazione si applicano () per gli elementi della lista profondamente radicate solo

StackOverflow https://stackoverflow.com/questions/2881366

  •  04-10-2019
  •  | 
  •  

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
È stato utile?

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
scroll top