Gyles Glover
Gyles Glover

Reputation: 1

Using order in R dataframes fails after column names have been changed. how can I recover this?

Setup dataframe

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)

I can order my dataframe in the normal way. This works fine.

df1[order(mtb),]

But if I change the names of the columns

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

This gives the error

Error in order(mtb1) : object 'mtb1' not found.

If I use the old column name in the instruction it works, although the output shows the new column name.

df1[order(mtb),]

If I change the name back to the original, the command appears to work normally. Can anyone explain? Is order using a hidden version of the column name?

Upvotes: 0

Views: 41

Answers (1)

Code_Sipra
Code_Sipra

Reputation: 1713

This should work. Let me know if this helps.

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

Upvotes: 0

Related Questions