which.max() 提取最后一个最大值

San*_*ndy 0 r max rowwise

在我的代码中,我想提取一系列列中的最后一个最大值,在数据帧上按行迭代。问题是我的脚本只给出了具有最大值的第一个匹配项(在本例中为第一列的名称)。关于如何更新此行以获得最后的最大值有什么建议吗?

我的数据框如下所示:

A.trust B.trust C.trust D.trust E.trust F.trust G.trust H.trust I.trust J.trust K.trust L.trust M.trust
-999    -999    -999    -999    -999    -999    -999.0  -999.0  -999.0   -999   -999    -999    -999
-999    -999    -999    -999    -999    -999     0.5    -999.0   0.5     -999   -999    -999    -999
-999    -999    -999    -999    -999    -999    -999.0  -999.0   1.0     -999   -999    -999    -999
-999    -999    -999    -999    -999    -999    -999.0  -999.0  -999.0   -999   -999    -999    -999
-999    -999    -999    -999    -999    -999    -999.0  -999.0  -999.0   -999   -999    -999    -999
-999    -999    -999    -999    -999    -999     0.5     0.5    -999.0   -999   -999    -999    -999
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码

# return cols which hold maximum
nams <- names(test)[apply(test, 1 ,which.max)]
Run Code Online (Sandbox Code Playgroud)

电流输出

目前,nams变量中的值为:

"A.trust"
"G.trust" 
"I.trust" 
"A.trust"
"A.trust" 
"G.trust"
Run Code Online (Sandbox Code Playgroud)

所需输出

我所需的变量值nams是这样的:

"M.trust" 
"I.trust" 
"I.trust"
"M.trust" 
"M.trust" 
"H.trust"
Run Code Online (Sandbox Code Playgroud)

输出()

test = structure(list(A.trust = c(-999, -999, -999, -999, -999, -999), 
               B.trust = c(-999, -999, -999, -999, -999, -999), 
               C.trust = c(-999, -999, -999, -999, -999, -999), 
               D.trust = c(-999, -999, -999, -999, -999, -999), 
               E.trust = c(-999, -999, -999, -999, -999, -999), 
               F.trust = c(-999, -999, -999, -999, -999, -999), 
               G.trust = c(-999,  0.5, -999, -999, -999,  0.5), 
               H.trust = c(-999, -999, -999, -999, -999,  0.5), 
               I.trust = c(-999,  0.5,  1,   -999, -999, -999), 
               J.trust = c(-999, -999, -999, -999, -999, -999), 
               K.trust = c(-999, -999, -999, -999, -999, -999), 
               L.trust = c(-999, -999, -999, -999, -999, -999), 
               M.trust = c(-999, -999, -999, -999, -999, -999)), 
          row.names = 600:605, class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

相关文章

以下帖子与我的问题相关,但我正在努力解决如何在我的脚本中进行此更改如何在 R 中的分组数据中查找某个观察结果的最后一次出现?。这是另一篇相关文章which.max ties R中的方法。任何帮助将不胜感激!

Ska*_*qqs 5

names(rev(test))[apply(rev(test), 1, which.max)]
[1] "M.trust" "I.trust" "I.trust" "M.trust" "M.trust" "H.trust"
Run Code Online (Sandbox Code Playgroud)