首页 > 解决方案 > 如何获取具有变量最大值的所有行

问题描述

我有包含两列和多行的矩阵。第一列名称是idCombinaison,第二列名称是accuarcy。有accuarcy一个浮点值。

现在我想获取所有值为accuarcy == max value. 在某些情况下(如图所示),我可以有很多行的值accuarcy等于 max,所以我想获得所有这些行!

我试过这个:

maxAccuracy <- subset(accuarcyMatrix, accuarcyMatrix['accuarcy'] == max(accuarcyMatrix['accuarcy']))

但这会返回一个空向量。请问有什么想法吗? 在此处输入图像描述

标签: rdataframemaxrowsubset

解决方案


模拟矩阵的可重现数据:

set.seed(123)
x <- matrix(sample(1:9, 30, T), 10, 3)
row.names(x) <- 1:10
colnames(x) <- LETTERS[1:3]

#    A B C
# 1  3 9 9
# 2  8 5 7
# 3  4 7 6
# ...

在矩阵对象中,您需要使用二进制方式来提取元素,例如data[a, b]. 以上面的数据为例,x["C"]将返回NA并将x[, "C"]返回 C 列中的所有元素。因此,以下两个代码将生成不同的输出。

subset(x, x["C"] == max(x["C"]))
#   A B C (Empty)

subset(x, x[, "C"] == max(x[, "C"]))
#   A B C
# 1 3 9 9
# 4 8 6 9

推荐阅读