矩阵到向量的最小比较而不使用 R 中的 apply

Matrix to vector minimum comparison without using apply in R

我正在尝试创建一个接受矩阵 M 和向量 v 的函数。然后它应该取 Mv 列之间的元素最小值。因此,行数 M = length(v)

例如,下面是对两个等长向量进行的。与向量相比,我希望它适用于矩阵。

vectorelementwisemin = function(x,y){   #x is a vector, y is a vector (same length)


            ind = which(x > y)
            z = x
            z[ind] <- y[ind]  

            return(z)
}

例如,矢量化函数可以接受:

    M
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    0    0    0    0    0    0    0    0    0     0     0     0
[2,]    2    2    5    4    2    3    4    1    4     4     4     2
[3,]    0    0    0    0    0    0    0    0    0     0     0     0
[4,]    0    0    0    0    0    0    0    0    0     0     0     0
[5,]    0    6    0    0    0    0    0    0    0     0     0     0
[6,]    0    0    0    0    0    0    0    0    0     0     0     0

    v

     0      4      2      1      3      0

And return 

    minmat(M,v)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    0    0    0    0    0    0    0    0    0     0     0     0
[2,]    2    2    4    4    2    3    4    1    4     4     4     2
[3,]    0    0    0    0    0    0    0    0    0     0     0     0
[4,]    0    0    0    0    0    0    0    0    0     0     0     0
[5,]    0    3    0    0    0    0    0    0    0     0     0     0
[6,]    0    0    0    0    0    0    0    0    0     0     0     0

您可以只使用 minmat <- function(M, v) pmin(M, v),尽管您可能想添加类似 if (nrow(M) != length(v)) stop("")

的内容