2015-01-22 10 views
9

R에서 목록의 목록을 정렬하려고합니다. 각 하위 목록에는 정수와 문자열이 포함되어 있습니다. 내 목표는 최종 목록이 오름차순으로 정수로 정렬되도록 목록을 정렬하는 것입니다. 아래는 내가 성취하고자하는 것을 보여주는 예입니다.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 내에서 좋은 방법이 있습니까? 이상적인 결과는 목록의 목록으로도 반환되어야합니다.

답변

16

이 시도 :

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

빠르고 정확한 답변을 해주셔서 감사합니다! 나는 그것을 받아 들으려고했지만 몇 분 정도 기다려야 할 것 같습니다! 시계가 받아 들여지는 동안 어쨌든 당신은 각 부분이하고있는 것에 대해 정교 할 수 있습니까? 나는 너의 사프리 사용법에 대해 가장 혼란 스럽다. '[['는 무엇을 지정합니까? 또한, sapply에서 마지막으로 주장하는 것은 무엇입니까? 나는 새로운 것을 배우고 싶다. ... – mjnichol

+2

@mjnichol - 장황하다.'sapply (list.of.lists, function (x) x [[1]])'- 각 목록을 반환 한 다음 벡터로 반환 한 다음 '주문'에 전달합니다. 예 : -'[[1]]과'[[ '(a, 1)'는 동등하다. – thelatemail

+0

아, 나는 일종의 것으로 생각합니다. 고맙습니다! – mjnichol

1

당신은 당신의 list.of.lists의 구조가 많이 있습니다.

df <- data.frame(t(list.2d)) 
이 같은 데이터 프레임으로, 거기에서, 아마도,

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

과 : 당신이해야 할 다른 처리에 따라, 당신과 같이 이차원리스트에 확인 할 수 있습니다

(기술적으로 데이터 프레임은 목록 유형입니다.) 특정 열 집합을 기준으로 정렬하고 요소 집합을 추출하는 것은 좀 더 일반적입니다. (비록 내가 여기서 받아 들여지는 대답을 정말로 좋아하지만.)

관련 문제