Как отсортировать вложенный список, используя два элемента списка в R? - PullRequest
1 голос
/ 17 апреля 2019

У меня есть вложенный список из n элементов, каждый из которых представляет собой список из 4 различных значений.Значения варьируются, но сравнимы между элементами.

Мне нужно сначала отсортировать список по значению m.group, а затем по значению att.«m.group» - это целое число, скажем, 1: 3, и каждому элементу в списке присваивается значение 1: 3 (хотя общее число будет меняться).Внутри каждой пронумерованной группы мне нужно расположить членов в порядке убывания 'att', который может быть любым значением от 0 до 2.

Я могу расположить список в возрастающем или убывающем значении любого из 'm.group 'или' att ', используя

function(a, field) a[order(sapply(a, "[[", i = field),decreasing = T)]

, но я не могу понять, как их объединить.

Каждый элемент выглядит следующим образом.

[[1]]
[[1]]$`ind`
[1] 1

[[1]]$m.group
[1] 3

[[1]]$offspring
[1] 0

[[1]]$att
[1] 0.07626772

На этом этапе значения «потомство» и «ind» не важны.

Для упрощения мне нужен вывод, который выглядит примерно так:

[[1]]
[[1]]$m.group
[1] 1

[[1]]$att
[1] 1.49352456


[[2]]
[[2]]$m.group
[1] 1

[[2]]$att
[1] 1.23452221


[[3]]
[[3]]$m.group
[1] 1

[[3]]$att
[1] 0.07626772


[[4]]
[[4]]$m.group
[1] 2

[[4]]$att
[1] 1.51852546

[[5]]
[[5]]$m.group
[1] 2

[[5]]$att
[1] 1.35648527

и т. Д.

РЕДАКТИРОВАТЬ

Вы можете создать аналогичный список с помощью следующего цикла:

example <-vector(mode="list", length = 40)

loop.nb<-1
j<-1
for(j in 1:40){

  example[[loop.nb]]$m.group <-sample((round(80/(10*2))),1)

  example[[loop.nb]]$att <- runif(1, min=0, max=1.7)

  loop.nb <-loop.nb+1

} 

Надеюсь, это понятно!

Спасибозаранее за вашу помощь,

Энди

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