R 组合矩阵

标签 r math matrix

我有两个矩阵,一个是二元矩阵(零或一),另一个是相同维度的整数矩阵,这些是方阵。

我想要一种以特定方式组合它们的有效方法,而不需要沿着每个元素进行迭代。

我想要组合它们的方式是从矩阵 A 和矩阵 B 得到一个结果矩阵,对于元素来说,采用不为零的最小数字。

任何人都可以想出 R 中的一个技巧来实现这一点吗?我尝试用数学方法来实现这一点,但还是不够,我想知道是否有一种方法可以用条件语句覆盖矩阵?

最佳答案

 matA <- matrix(-8:7, 4,4); set.seed(123)
 matB <- matrix(sample(0:1, 16, repl=TRUE), 4, 4)
 matC <- matrix(NA, nrow(matA), ncol(matA))
 matC[] <- pmin( matA, MatB)
 matC[ matB==0] <- matA[matB==0]

 matB
#-----------
     [,1] [,2] [,3] [,4]
[1,]    0    1    1    1
[2,]    1    0    0    1
[3,]    0    1    1    0
[4,]    1    1    0    1
 matC
#---------
     [,1] [,2] [,3] [,4]
[1,]   -8   -4    0    1
[2,]   -7   -3    1    1
[3,]   -6   -2    1    6
[4,]   -5   -1    3    1

flodel 的方法产生:

> ifelse(matB == 0, matB, pmin(matA, matB))
     [,1] [,2] [,3] [,4]
[1,]    0   -4    0    1
[2,]   -7    0    0    1
[3,]    0   -2    1    0
[4,]   -5   -1    0    1

mnel 的方法产生:

> (matB * !matA) + matA
     [,1] [,2] [,3] [,4]
[1,]   -8   -4    1    4
[2,]   -7   -3    1    5
[3,]   -6   -2    2    6
[4,]   -5   -1    3    7

关于R 组合矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479316/

相关文章:

python - 使用欧几里得距离的 Numpy 数组的邻接矩阵

c - 程序不会打印矩阵

r - 尝试读取CSV文件时的"Unrecognized escape in character string"

r - data.table 上的频率表,包括未使用值的零

java - 静态类型和编写简单的矩阵库

scala - Scala 中的海灵格距离

r - 具有共享数据的多个 ggplot2 图表

r - 将样本名称添加到用 s.class 绘制的 PCA

c# - 在 C# 中舍入远离 0 的数字

c - 索引多个数组/矩阵元素类似于 C 中的 matlab "var[1:10]"