对于每一行,按desc顺序排序前5个值,并在那里获得列名

问题描述

我有一个数据框,对于每一行,我想提取每行最大值的前5列

DF <- data.frame(a1=c(10,45,100,5000,23,2,56),a2=c(60,20,5,1,3,4,5),a3=c(90,-5,-3,-2),a4=c(900,122,30,40,50,64,-75,-83,-92),a5=c(190,32,80,49,-50,-7,a6=c(30,27,54,84,-37,-23),a7=c(0,39,9,-23))

我尝试使用以下方法

k <- 5

mx <- t(apply(DF,function(x)names(DF)[sort(head(order(x,decreasing=TRUE),k))]))
mx<-as.data.frame(mx)

我能够得到结果,但顺序对所有行都不正确

例如

输入为

enter image description here

**第1行的预期O / P应该是**

a4 a5 a3 a2 a6

a4 a5 a3 a6 a2

我的O / P是

enter image description here

如果可能,我希望基于dplyr的解决方案

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)