Сортировать по значению в списке в списке - PullRequest
0 голосов
/ 31 марта 2019

Вот список, который у меня есть

example <- list(list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 0.5),
 list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 0.2), 
 list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 1.2), 
 list(vals = list(1, 2, 3), param = list(4,5,6), p.val = 0.9))

Как мне отсортировать этот список в порядке возрастания по их p-val?

Моя главная проблема заключается в том, что единственное решение, которое мне кажется,Посмотрим, насколько это возможно, цикл for, выполняющий весь этот список, который на самом деле состоит из 100 тыс. элементов.

РЕДАКТИРОВАТЬ: я изменил свой пример списка, чтобы быть более реалистичным для моих фактических данных.

1 Ответ

1 голос
/ 31 марта 2019

Поскольку ваши значения списка "первого уровня" на самом деле также являются списками, вам необходимо сначала извлечь их, а затем запустить order для результатов. Для второй версии вам нужно просто заменить p.val как индекс извлечения

dput(example[ order( sapply(example, "[[", 'p.val')) ] )
  list(list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 0.2), 
      list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 0.5), 
      list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 0.9), 
      list(vals = list(1, 2, 3), param = list(4, 5, 6), p.val = 1.2))

Это не изменит значение примера, поэтому для того, чтобы оно "прилипало", вам нужно присвоить результат имени, возможно, с тем же именем, example.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...