获取R中列表列表中最大列表的索引

问题描述 投票:1回答:1

这个问题建立在另一个问题上:get the lengths of element of lists of list in R

一旦我们得到列表列表中元素的长度,我们如何获得最大列表的索引?

我的列表d看起来像:

d <- list( list(level = c(1), x = c(10,20,30,40), y = c(55,44,33,22)), 
list(level = c(1), x = c(50,70,23,53, 43), y = c(80,23,54,30, 43)), 
list(level = c(1), x = c(30), y = c(90)))

这是一个视觉表现

[[1]]
[[1]]$level
[1] 1

[[1]]$x
[1] 10 20 30 40

[[1]]$y
[1] 55 44 33 22

[[2]]
[[2]]$level
[1] 1

[[2]]$x
[1] 50 70 23 53 43

[[2]]$y
[1] 80 23 54 30 43

[[3]]
[[3]]$level
[1] 1

[[3]]$x
[1] 30

[[3]]$y
[1] 90

第一个列表列表共有9个元素,第二个列表列表总共有11个元素,第三个列表列表有3个元素。

我正在寻找一个将返回索引2的命令,因为列表列表包含的元素最多。

r list lapply sapply
1个回答
1
投票

我们遍历list,提取'x'或'y'组件并获取它的lengths,用它来创建一个逻辑索引来过滤lst

l1 <- lengths(sapply(d, `[`, 'x'))
d[l1== max(l1)]

#[[1]]
#[[1]]$level
#[1] 1

#[[1]]$x
#[1] 50 70 23 53 43

#[[1]]$y
#[1] 80 23 54 30 43

如果这必须考虑元素的总数,循环通过list('d')unlist并得到lengths

l1 <- lengths(lapply(d, unlist))
d[l1 == max(l1)]
© www.soinside.com 2019 - 2024. All rights reserved.