colsum rowsum填充矩阵

use*_*121 3 if-statement r matrix apply

我正在尝试为矩阵中的每个单元格条目写入最小值,即在相同维度的新矩阵中的rowsum值或colsum值.

例如:

说我有矩阵c看起来像这样:

x <- matrix(seq(1:6),2)
x
      [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
Run Code Online (Sandbox Code Playgroud)

它的rowum和colsum是:

rowSums(x)
[1]  9 12
colSums(x)
[1]  3  7 11
Run Code Online (Sandbox Code Playgroud)

所以基于该信息,新矩阵应如下所示:

      [,1] [,2] [,3]
[1,]    3    7    9
[2,]    3    7    11
Run Code Online (Sandbox Code Playgroud)

我一直在考虑使用apply但我不知道如何编写if语句来为每个单元格条目写出rowsum或colsum中的最小值.有任何想法吗?

Mat*_*erg 6

这可以被认为是行和列总和的外积,其中函数采用最小值:

outer(rowSums(x), colSums(x), FUN=pmin)
##      [,1] [,2] [,3]
## [1,]    3    7    9
## [2,]    3    7   11
Run Code Online (Sandbox Code Playgroud)