2017-11-18 5 views
0

セットアップデータフレーム列名を変更した後、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) 

私は、通常の方法で私のデータフレームを注文することができます。これは正常に動作します。オブジェクトの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 
関連する問題