【发布时间】:2022-01-01 14:37:11
【问题描述】:
我正在使用 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”的所有值都小于该点的 a 坐标并且
- “b”的所有值都小于该点的b坐标
有没有办法查出这个数据集是否包含“全局最大点”?
例如,像上面的红点。我知道在大多数情况下,不太可能找到这样的点,因为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”。
谢谢!
注意:在现实世界中,通常不可能找到“全局最大点”,因为在大数据中点“重叠”(不同行包含不同列的最大值)。在优化问题的上下文中,有几个点通常可以满足这个标准并且都被认为是合适的——这些点被称为“非支配”,据说位于“帕累托前沿”(绿线):
【问题讨论】:
标签: r data-visualization data-manipulation