簡體   English   中英

我有一個 R 函數可以找到成對之間的最小值嗎?

[英]I there a R function for finding a minimum between to pairs?

我需要確定占主導地位的變量對:如果該對的兩個值都低於數據中的其他對。

我已經嘗試過minpmin函數,但我不確定它們是否最合適。

   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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM