R 如何按列的指定名称对数据进行排序
我想使用R中的order()函数按列对数据进行排序 例如,使用下面的data.frameR 如何按列的指定名称对数据进行排序,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
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]]),]
。