У меня есть вложенный список из 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
}
Надеюсь, это понятно!
Спасибозаранее за вашу помощь,
Энди