从列表列表中选择子列表

时间:2017-09-08 20:27:12

标签: r list sorting subset

我想从列表列表中删除子列表。例如,假设我有一个像这样结构的大清单

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)并将该列表另存为新对象。

实现这一目标的有效方法是什么?如果可能的话,我不想转换为不同的对象类型。

1 个答案:

答案 0 :(得分: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"