2013-01-10 5 views
0

여러 열이있는 행렬이 있는데 특수 열에서 을 벡터로 추출하려고하지만 해당 행의 에 따라 정렬합니다.정의 된 순서를 기반으로하는 열 값 가져 오기

지금까지는 내가 찾지 못한 for-loop 방식으로 이것을 수행하고 있습니다. 매우 예쁩니다. 나는 그런 일을하는 훨씬 더 좋은 방법이 있다고 생각합니다. 여기

작업 예제 :

# creating a example matrix with two columns 
df <- data.frame(colA=c("A","B","C","D","E"),colB=(1:5)) 
mat <- as.matrix(df) 

# my desired order 
my_order <- c("C","D","A","B") 

# For loop and collecting results in a vector 
out <- NULL 
for(i in my_order) out <- c(out,mat[mat[,1]==i,2]) 

print(out) 

어떤 제안, 더 우아하고 계산 빠른 방법의 예?

+0

값이 my_order에 없으면 어떻게됩니까? colA의 값을 반복하면 어떻게 될까요? – digEmAll

답변

2

당신은 match을 사용할 수 있습니다 : 당신의 colB 이후

df$colB[match(my_order,df$colA)] 

이미 주문, 그냥 match(my_order,df$colA)는 동일한 결과를 반환하는 일이 있지만, 일반적으로 당신은 인덱싱 할 수 있습니다.

관련 문제