2017-09-08 5 views
2

Ich möchte eine Unterliste aus einer Liste von Listen entfernen. Zum Beispiel, sagen, dass ich eine große Liste wie dieseAuswählen einer Unterliste aus einer Liste von Listen

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 
} 

und ich mag strukturiert habe den sublist (das gesamte Element: x) finden, mit der höchsten Gesamt und diese Liste als neues Objekt speichern.

Was ist ein effizienter Weg, dies zu erreichen? Ich möchte, wenn möglich, nicht in einen anderen Objekttyp konvertieren.

Antwort

2

Verwendung:

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

gibt:

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

$total 
[1] 24 

zuweisen, das zu einem neuen Objekt wird Ihnen eine neue Liste auch:

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