2012-12-17 20 views
5

Mam następującą listę:Sortowanie listy listy przez klucz w R

myList <- list(list(a = 1,b = 1:5,x = 2), 
       list(a = 7,b = 9.1,x = 3), 
       list(a=-1, b = 0.2, x = 1)) 

I chciałbym uporządkować moje elementy tej listy kryterium „x”. Nie rozumiem, jak to zrobić. Każda pomoc będzie bardzo ceniona.

Odpowiedz

8
myList[order(sapply(myList, "[[", "x"))] 

rade

[[1]] 
[[1]]$a 
[1] -1 

[[1]]$b 
[1] 0.2 

[[1]]$x 
[1] 1 


[[2]] 
[[2]]$a 
[1] 1 

[[2]]$b 
[1] 1 2 3 4 5 

[[2]]$x 
[1] 2 


[[3]] 
[[3]]$a 
[1] 7 

[[3]]$b 
[1] 9.1 

[[3]]$x 
[1] 3 
+0

Dzięki Sven, działa doskonale! Nie wiedziałem, że ta sztuczka jest sapply (myList, "[[", "x") – S4M

+2

Podejrzewam, że wywołanie '[[' jest szybsze, ale możesz również użyć nieco mniej dziwnie wyglądającego 'mapply (get, 'x', myList) '. –

+3

@MatthewPlourde Można to również zrobić za pomocą 'sapply (myList, get, x = 'x')'. –

Powiązane problemy