在发布这个问题之前,我已经在几个问题中搜索了类似的东西,但我找不到我要找的东西。如果这篇文章是重复的,那么我很抱歉,如果您能将我转发到正确的问题,我将不胜感激。
我有以下数据:
data<-data.frame(a=c(0:10),b=c(5:15),c=c(10:20),d=c(1:5,15:20))
我“只是”希望获得具有最大值的行的列名。我完成了这项任务
names(data)[apply(data,1,which.max)]
实际上,由于有两列 (c & d[6:10]) 符合最大值的条件,我真正想要获得的是:
result<-c("c","c","c","c","c","double","double","double","double","double")
所以,由于 which.max 的行为只允许(至少在我看来)只获得第一个元素,我想出了一个非常复杂的解决方案。查找每行的重复元素,然后,如果这些索引中的任何一个与 which.max 代码中的索引匹配,则将其更改为“double”。或多或少是这样的:
index<-t(apply(data,1,function (x) duplicated(x,fromLast=TRUE)))
colnames(index)<-colnames(data)
再次感谢任何提示!