3

标题很清楚,但我试图取两个矩阵 A 和 B,并输出一个矩阵 C,它具有两个矩阵中的最小元素。

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)
}

但是,我希望这可以被矢量化,但我想不出该怎么做。我还没有找到任何东西,所以如果有人有任何想法,我将不胜感激。

谢谢!

4

2 回答 2

13

See ?pmin (parallel minimum):

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
于 2013-01-18T15:29:26.667 回答
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
于 2017-06-16T11:52:58.610 回答