1

如果我有 n 个矩阵的选择,我想要最小的非零数,否则返回零。由于我将使用的矩阵的大小,我想使用可以应用于矩阵对象而不是遍历每个元素的构造来做到这一点。一个例子....

> A
     [,1] [,2]
[1,]    0    1
[2,]    0    0

> B
     [,1] [,2]
[1,]    2    2
[2,]    3    0

> C
     [,1] [,2]
[1,]    1    3
[2,]    2    0

我希望它回来...

> FinalMatrix
     [,1] [,2]
[1,]    1    1
[2,]    2    0

如果有人有任何建议,请提前致谢!

4

1 回答 1

1

这似乎有效:

A <- matrix(c(0, 0, 1, 0), 2, 2)
B <- matrix(c(2, 3, 2, 0), 2, 2)
C <- matrix(c(1, 2, 3, 0), 2, 2)
dat <- list(A, B, C)

out <- do.call(pmin, lapply(dat, function(x) ifelse(x == 0, Inf, x)))
out <- ifelse(is.infinite(out), 0, out)
于 2013-07-07T00:01:35.633 回答