2014-02-28 5 views
0

두 개의 벡터 X와 Y가 있습니다. 따라서 X를 오름차순으로 정렬하고 X와 해당 Y를 짝지기를 원합니다. 여기서 X와 Y는 같은 수의 요소를가집니다.다른 벡터로 두 벡터를 정렬 R

어떤 도움이 필요합니까? 감사.

+1

'정렬 '작업을하지 않습니까? X와 Y는 어떻게 대응합니까? " – rawr

+1

나는이 질문이 전에 응답되었다고 믿는다 : http://stackoverflow.com/questions/1568511/how-do-i-sort-one-vector-based-on-values-of-another – Corcovado

+0

네, 저것을 시도했습니다. 링크와 나를 위해 작동하지 않았다. 그러나 방금 해결했습니다. – shammun

답변

3

당신이 order을 사용할 수있는, 예컨대 :

X <- c(1,4,2,4,5) 
Y <- c(9,3,2,3,4) 
X.sorted <- X[order(X)] 
Y.sorted <- Y[order(X)] 
+0

감사합니다. 괜찮 았어. – shammun

1

쌍둥이의 대답은 작동합니다. (

i = order(X) 
X.sorted = X[i] 
Y.sorted = Y[i] 
rm(i)    #clean up 

을 : 벡터가 매우 큰 경우,이 순서를 저장하는 것이 아니라 두 번 계산하는 것이 더 효율적이 될 수 있다는 것입니다 한 가지 제안 (내가 언급 싶지만, 내 담당자가 너무 낮은 해요) R 캐쉬가 어떻게 작동하는지는 잘 모르겠지만, R이 트윈의 코드로도 내부적으로 이것을 수행 할 가능성은 있습니다.)

이 데이터 벡터가 더 명확하게 링크되도록하려는 것 같습니다. 어떤 경우에는이를 체계화하여 단일 데이터 프레임으로 처리하는 것이 좋습니다.

d = data.frame(X=X,Y=Y) 
d.sorted = d[order(d$X),] 
+1

나는 R이 트윈의 코드로 첫 번째'order' 호출의 결과를 "캐싱"하지 않을 것이라고 확신합니다. 당신의 접근 방식에 대해'i'를 쓰면 숫자 벡터가 가비지 수집되는 것을 막을 것이고,'rm (i)'로 끝내고 싶을 것입니다. –

+0

좋은 지적, 편집 됨. 감사. –

관련 문제