Сортировать список списков на основе внутренней переменной списка в R - PullRequest
0 голосов
/ 12 ноября 2018

Я создал список списков (скажем, parentList), используя вектор в R. parentList состоит из 100 списков childList1, childList2 и так далее.Каждый такой childList состоит из списка элементов (grandChildVariable1, grandChildVariable2 и т. Д.).Все списки и переменные являются безымянными, кроме parentList.

Я хочу отсортировать parentList на основе второго элемента (grandChildVariable2) каждого из childList.Я могу получить значения этой переменной, используя parentList[[2]][2].Но я не очень уверен, как отсортировать весь список.

В настоящее время я пытаюсь отсортировать его следующим образом: sorted_list <- parentList[order(sapply(parentList,'[[',2))], но он выбирает только второй элемент списка childList2 и возвращает следующую ошибку: unimplemented type 'list' in 'orderVector1'.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Мне удалось выяснить причину проблемы unimplemented type 'list' in 'orderVector1'.Причина в том, что некоторые элементы childList были равны NULL.Когда я убедился, что parentList не содержит NULL, я смог правильно выполнить сортировку.

Использование sorted_list <- parentList[order(sapply(parentList,'[[',2))] дало правильный выходной результат, и ответ, данный Cleland, также помог бы.

0 голосов
/ 12 ноября 2018

Я думаю, что это должно работать.Немного проще сначала извлечь значения, а затем использовать их для упорядочения родительского списка.

childList1 <- list(grandChildVariable1 = 1,
               grandChildVariable2 = 10)
childList2 <- list(grandChildVariable1 = 1,
               grandChildVariable2 = 30)
childList3 <- list(grandChildVariable1 = 1,
               grandChildVariable2 = 20)
parentList <- list(childList1, childList2,childList3)

x <- sapply(parentList, function(x) x[[2]])

orderedParentList <- parentList[order(x)]
str(orderedParentList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...