2012-12-17 9 views
5

Ho la seguente lista:Ordinamento di un elenco di lista con chiave in 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)) 

E vorrei ordinare i miei elementi in questo elenco dal criterio "x". Sono in perdita su come farlo. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

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

farà il trucco

[[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

Grazie Sven, funziona perfettamente! Non sapevo quel trucco in modo sfumato (myList, "[[", "x") – S4M

+2

Sospetto di aver chiamato '[[' è più veloce, ma potresti anche usare l'aspetto leggermente meno strano di 'mapply (get, 'x', myList) '. –

+3

@MatthewPlourde Questo potrebbe anche essere fatto con 'sapply (myList, get, x = 'x')'. –

Problemi correlati