2017-09-08 1 views
2

Je souhaite supprimer une sous-liste d'une liste de listes. Par exemple, dire que j'ai une grande liste structurée comme celui-ciSélection d'une sous-liste dans une liste de listes

mybiglist <- vector('list', 5) 
names(mybiglist) <- paste0('item:', seq_along(mybiglist)) 
for(i in seq_along(mybiglist)){ 
    a <- rbinom(8, 5, i/10) 
    b <- sum(c) 

    tmp <- list(binomial = a, total = b) 
    mybiglist[[i]] <- tmp 
} 

et je veux trouver le sous-liste (l'élément entier: x) avec le total le plus élevé et enregistrer cette liste comme un nouvel objet.

Qu'est-ce qu'un moyen efficace pour y parvenir? Je préfère ne pas convertir en un type d'objet différent, si possible.

Répondre

2

utilisant:

mybiglist[[which.max(sapply(mybiglist, `[[`, 'total'))]] 

donne:

$binomial 
[1] 4 2 2 5 5 1 3 2 

$total 
[1] 24 

Attribution qui à un nouvel objet vous donnera une nouvelle liste ainsi:

> new <- mybiglist[[which.max(sapply(mybiglist, `[[`, 'total'))]] 
> class(new) 
[1] "list"