R:查找数据集中的最大点

R: Find the Maximum Point in a Dataset

我正在使用 R 编程语言。假设我有以下数据:

set.seed(123)

a = rnorm(100000,10,10)
b = rnorm(100000,10,10)

my_data = data.frame(a,b)

plot(my_data$a, my_data$b)

当您查看此数据时:

 head(my_data)
          a         b
1  4.395244 12.649934
2  7.698225 28.307475
3 25.587083  9.406217
4 10.705084  9.467906
5 11.292877 14.379042
6 27.150650 23.374490

我的问题:有没有办法找出这个数据集是否包含一个点使得

有没有这样的方法来找出这个数据集是否包含“全局最大点”?

比如上面那个红点。我知道在大多数情况下,是不太可能找到这样一个点的,看到a坐标最大的点不一定b坐标最大,反之亦然:

#row with max value of "a"
which(my_data == max(my_data$a), arr.ind=TRUE)

       row col
[1,] 23102   1

#row with max value of "b"
 which(my_data == max(my_data$b), arr.ind=TRUE)
      row col
[1,] 2071   2

#display row with max value of "a"
> my_data[23102,]
             a        b
23102 53.22815 4.500006

#display row with max value of "b"
> my_data[2071,]
            a       b
2071 15.85992 52.0609

我们可以看到,最大值为“a”的行不包含最大值“b”。

谢谢!

注意:在现实世界中,通常不可能找到“全局最大点”,因为在大数据中点“重叠”(不同行包含不同的最大值列)。在优化问题的上下文中,几个点通常可以满足这个标准并且都被认为是合适的 - 这些点被称为“非支配”并且位于“Pareto Frontier”(绿线)上:

这是一种方法。由于行号为0,所以不存在a和b都最大的点。

library(dplyr)

my_data %>%
  filter(if_all(.fns = ~.x == max(.x)))
# [1] a b
# <0 rows> (or 0-length row.names)