我有一个 R 函数可以找到对之间的最小值吗?
I there a R function for finding a minimum between to pairs?
我需要确定占主导地位的变量对:如果这对变量的两个值都低于数据中的其他对。
我已经尝试过 min
或 pmin
的功能,但我不确定它们是否最合适。
a = matrix(c(50,70), ncol = 2)
b = matrix(c(45,85), ncol = 2)
df = rbind(a,b)
Dominance <- function(a){
for (i in 1:nrow(a)) {
for (j in 1:nrow(a)) {
i1 <- rowSums(a[i,] < a[j,]) == ncol(a)
a[i1,, drop = FALSE]
}
}
return(a)
}
l = Dominance(df)
> l
X1 X2
1 45 65
2 50 70
我希望删除 (45,65) 对。
一个选项是在大小相等的对象之间进行比较(<
),然后得到rowSums
,如果总和等于数据集的列数,则意味着该行的所有元素都小于第二个数据对应的行
f1 <- function(mat1, mat2) {
i1 <- !rowSums(mat1 < mat2) == ncol(mat1)
i2 <- !rowSums(mat2 < mat1) == ncol(mat2)
rbind(mat1, mat2)[c(i1, i2),, drop = FALSE]
}
b <- matrix(c(45,65), ncol = 2)
b1 <- matrix(c(45,85), ncol = 2)
f1(a, b)
# [,1] [,2]
#[1,] 50 70
f1(a, b1)
# [,1] [,2]
#[1,] 50 70
#[2,] 45 85
我需要确定占主导地位的变量对:如果这对变量的两个值都低于数据中的其他对。
我已经尝试过 min
或 pmin
的功能,但我不确定它们是否最合适。
a = matrix(c(50,70), ncol = 2)
b = matrix(c(45,85), ncol = 2)
df = rbind(a,b)
Dominance <- function(a){
for (i in 1:nrow(a)) {
for (j in 1:nrow(a)) {
i1 <- rowSums(a[i,] < a[j,]) == ncol(a)
a[i1,, drop = FALSE]
}
}
return(a)
}
l = Dominance(df)
> l
X1 X2
1 45 65
2 50 70
我希望删除 (45,65) 对。
一个选项是在大小相等的对象之间进行比较(<
),然后得到rowSums
,如果总和等于数据集的列数,则意味着该行的所有元素都小于第二个数据对应的行
f1 <- function(mat1, mat2) {
i1 <- !rowSums(mat1 < mat2) == ncol(mat1)
i2 <- !rowSums(mat2 < mat1) == ncol(mat2)
rbind(mat1, mat2)[c(i1, i2),, drop = FALSE]
}
b <- matrix(c(45,65), ncol = 2)
b1 <- matrix(c(45,85), ncol = 2)
f1(a, b)
# [,1] [,2]
#[1,] 50 70
f1(a, b1)
# [,1] [,2]
#[1,] 50 70
#[2,] 45 85