R 如何按列的指定名称对数据进行排序

R 如何按列的指定名称对数据进行排序,r,R,我想使用R中的order()函数按列对数据进行排序 例如,使用下面的data.frame set.seed(1) mydata <-as.data.frame(cbind(NUM=seq(1:5),RES=runif(5,0,10))) > with(data = mydata, mydata[order(RES),]) NUM RES 5 5 2.016819 1 1 2.655087 2 2 3.721239 3 3 5.728534 4 4

我想使用R中的order()函数按列对数据进行排序

例如,使用下面的data.frame

set.seed(1)
mydata <-as.data.frame(cbind(NUM=seq(1:5),RES=runif(5,0,10)))

> with(data = mydata, mydata[order(RES),])
  NUM      RES
5   5 2.016819
1   1 2.655087
2   2 3.721239
3   3 5.728534
4   4 9.082078
set.seed(1)
mydata with(数据=mydata,mydata[顺序(RES),])
NUM RES
5   5 2.016819
1   1 2.655087
2   2 3.721239
3   3 5.728534
4   4 9.082078
没关系。但是,当我对一列的指定名称执行相同的操作时,我得到了一个意外的结果

colname <- "RES"

> with(data = mydata, mydata[order(colname),])
  NUM      RES
1   1 2.655087
colname with(data=mydata,mydata[订单(colname),])
NUM RES
1   1 2.655087
我想知道是否有人遇到过同样的问题,或者你是否有解决办法。提前感谢您的帮助。

使用
get()
返回命名对象的值:

with(data = mydata, mydata[order(get(colname)),])

#  NUM      RES
#5   5 2.016819
#1   1 2.655087
#2   2 3.721239
#3   3 5.728534
#4   4 9.082078
我认为
with()
在这里有点过分了。相反,我将仅限定data.frame下的列。对于硬编码列名,这将是
mydata[order(mydata$RES),]
,对于可变列名,这将是
mydata[order(mydata[,colname]),]
,或者如果您愿意,
mydata[order(mydata[[colname]]),]