2013-01-18 61 views
3

標題相當清楚,但我試圖取兩個矩陣A和B,並輸出一個矩陣C具有來自兩個矩陣的最小元素。比較兩個矩陣(A&B)並輸出一個新的矩陣C,其中cij = min(aij,bij)

CIJ = MIN(AIJ,BIJ)

這是我正在考慮做這種方式:

C <- matrix(ncol = ncol(A), nrow = nrow(A), 0) 
for (i in 1:ncol(C)) { 
    Y <- rbind(A[i,], B[i,]) 
    C[i,] <- apply(Y, 2, min) 
} 

不過,我希望這可以向量化,但我想不出怎麼做。我沒有發現任何東西,如果有人有任何想法,我會非常感激。

謝謝!

回答

11

?pmin(平行最小值):

R> A <- matrix(1:4, 2, 2) 
R> B <- matrix(c(5, 1, 1, 6), 2, 2) 
R> A 
    [,1] [,2] 
[1,] 1 3 
[2,] 2 4 
R> B 
    [,1] [,2] 
[1,] 5 1 
[2,] 1 6 
R> pmin(A, B) 
    [,1] [,2] 
[1,] 1 1 
[2,] 1 4 
+1

+1不錯的答案! (只有10個字符) –

+0

@ rcs但在這裏你假設mtarix具有相同的長度。 – agstudy

+3

這兩個矩陣必須具有相同的維數,因爲OP寫了'cij = min(aij,bij)' –

0

嘗試

C <- A 
C[A>B] <- B[A>B] 

這是不太簡單,但會奏效。示範:

> A <- matrix(1:4, 2, 2) 
> B <- matrix(c(5, 1, 1, 6), 2, 2) 
> C <- A 
> C[A>B] <- B[A>B] 
> 
> A 
    [,1] [,2] 
[1,] 1 3 
[2,] 2 4 
> B 
    [,1] [,2] 
[1,] 5 1 
[2,] 1 6 
> C 
    [,1] [,2] 
[1,] 1 1 
[2,] 1 4