Как отсортировать список списков в R?

Я пытаюсь отсортировать список списков в р. Каждый подсписок содержит целое число и строку символов. Моя цель-упорядочить списки так, чтобы окончательный список сортировался по целым числам в порядке возрастания. Ниже приведен пример того, что я пытаюсь добиться:

a <- list(-5,"help")
b <- list(3, "stack")
c <- list(1, "me")
d <- list(10, "overflow")

list.of.lists <- list(a,b,c,d)
magic.sort(list.of.lists)
# Below is not exactly how it would be displayed, but should be understandable
-5, "help"
1, "me"
3, "stack"
10, "overflow"

есть ли хороший способ в R для достижения этого результата? В идеале результат должен быть возвращен в виде списка списков.

2 ответов


попробуйте это:

list.of.lists[order(sapply(list.of.lists,'[[',1))]

у вас много структуры в вашем списке.из.списки. В зависимости от другой обработки вам нужно сделать, вы можете сделать это в двумерный список, например:

list.2d <- sapply(list.of.lists, cbind)

и, возможно, оттуда, в кадр данных, как это:

df <- data.frame(t(list.2d))

(технически фрейм данных - это тип списка.) Сортировка по определенному набору столбцов и извлечение подмножеств элементов могут быть немного более обычными. (Хотя мне также очень нравится принятый ответ здесь.)