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中的最小值.有任何想法吗?
这可以被认为是行和列总和的外积,其中函数采用最小值:
outer(rowSums(x), colSums(x), FUN=pmin)
## [,1] [,2] [,3]
## [1,] 3 7 9
## [2,] 3 7 11
Run Code Online (Sandbox Code Playgroud)