2017-11-18 11 views
0

설정 dataframe열 이름이 변경된 후 R 데이터 프레임의 순서 사용이 실패합니다. 어떻게 복구 할 수 있습니까?

mta<-c("ldall","nold","ldall","nold","ldall","nold","ldall","nold") 
mtb<-c(491, 28581,241,5882,365,7398,512,10887) 
df1<-data.frame(mta,mtb) 

나는 정상적인 방법으로 내 dataframe을 주문할 수 있습니다. 이것은 잘 작동합니다. 객체 mtb1 '을 (를) 찾을 수 없습니다 : 나는 열

names(df1)<-c("mta1","mtb1") 
df1[order(mtb1),] 

의 이름을 변경하는 경우

df1[order(mtb),] 

는 그러나이 오류를 위해 (mtb1)에서

오류를 제공합니다.

명령에 이전 열 이름을 사용하면 출력에 새 열 이름이 표시되지만 작동합니다.

df1[order(mtb),] 

이름을 원래대로 되돌리면 명령이 정상적으로 작동하는 것 같습니다. 아무도 설명 할 수 있을까요? order은 숨겨진 버전의 열 이름을 사용하고 있습니까?

+1

'mtb'는 전역 환경에서 벡터로 정의 되었기 때문에 작동합니다. 반면에 mtb1은 데이터 프레임의 열입니다. 그래서 당신이 필요로하는 것은'df1 [order (df1 $ mtb1)]' – Sotos

답변

0

이렇게하면됩니다. 이것이 도움이되는지 알려주십시오.

mta<-c("ldall","nold","ldall","nold","ldall","nold","ldall","nold") 
mtb<-c(491, 28581,241,5882,365,7398,512,10887) 
df1<-data.frame(mta,mtb) 

# Change column names 
colnames(df1) <- c("mta1","mtb1") 

# Sort column mtb1 from the data frame 
df1[order(df1$mtb1), ] 

    mta1 mtb1 
3 ldall 241 
5 ldall 365 
1 ldall 491 
7 ldall 512 
4 nold 5882 
6 nold 7398 
8 nold 10887 
2 nold 28581