我想从列表列表中删除子列表。例如,假设我有一个像这样结构的大清单
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)并将该列表另存为新对象。
实现这一目标的有效方法是什么?如果可能的话,我不想转换为不同的对象类型。
答案 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"