2017-09-08 2 views
2

목록 목록에서 하위 목록을 제거하고 싶습니다. 예를 들어, 나는이목록 목록에서 하위 목록 선택

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 
} 

같은 구조 큰 목록을 가지고 말을하고 난 하위 목록 (전체 항목 : x)를 찾으려는 가장 높은 총을 새로운 개체로 그 목록을 저장합니다.

이것을 달성하는 효과적인 방법은 무엇입니까? 가능한 경우 다른 객체 유형으로 변환하지 않는 것이 좋습니다.

답변

2

사용 :

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

는 제공 : 새 객체에 그 지정

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

$total 
[1] 24 

뿐만 아니라 당신에게 새로운 목록을 제공합니다 :

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