Получить индекс самого большого списка в списке списка в R - PullRequest
0 голосов
/ 08 сентября 2018

Этот вопрос строится на основе этого другого вопроса: получить длину элемента списков списков в 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, поскольку в этом списке списков больше всего элементов.

1 Ответ

0 голосов
/ 08 сентября 2018

Мы перебираем 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)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...