首页 > 解决方案 > R中的凸联合操作

问题描述

我有 3 个向量

a = c(3,7) 
b = c(4,6)
c = c(2,6) 

我想把这三套结合起来。我可以使用该union()函数,但“凸”联合要求向量c从联合中删除,因为它由 a 支配,这对于两个元素来说更高。

有什么简单的方法吗?

标签: runion

解决方案


如果每一行m是一对,则which.nondominated(-t(m))给出不被其他行支配的行的行号。代码是用 C 编写的,所以应该很快。

library(ecr)
m <- rbind(a, b, c) # input data

ix <- which.nondominated(-t(m))    # 1, 2
mm <- m[ix, ]
mm
##   [,1] [,2]
## a    3    7
## b    4    6

此示例中没有重复项,但如果可能存在并且您还想删除它们,则:

unique(mm)

或者

mm[!duplicated(mm), ]

推荐阅读