appliquer apply () aux éléments de la liste profondément ancrées seulement

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

  •  04-10-2019
  •  | 
  •  

Question

Je voudrais appliquer ma fonction aux seuls éléments qui sont plus profondes dans la structure de la liste.

Par exemple, je voudrais appliquer une certaine fonction aux éléments de la liste de deuxième ordre seulement. Est-ce possible avec apply ()?

> 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
Était-ce utile?

La solution

Utilisez deux 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

Autres conseils

Ne sachant pas « r », mais je suis sûr que vous pouvez appliquer une fonction qui applique votre fonction. Que votre Funktion soit f, puis appliquer au lieu f écriture appliquer (appliquer f)

Dans haskell-ish

data = [[5,10], [15,20], [25,3]]

Supposons que nous voulons ajouter 1 à chaque numéro:

map (map (+1)) data
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top