列求和 行求和 填充矩阵

3

我将尝试为矩阵中的每个单元格条目编写一个新矩阵,该矩阵具有相同的维数,并确定最小值是行和列总和值中的哪一个。

例如:

假设我有一个名为c的矩阵,它看起来像这样:

x <- matrix(seq(1:6),2)
x
      [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

它的行和列之和分别为:

rowSums(x)
[1]  9 12
colSums(x)
[1]  3  7 11

基于这些信息,新矩阵应该如下所示:
      [,1] [,2] [,3]
[1,]    3    7    9
[2,]    3    7    11

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


x[1,3] 不应该是9吗? - Julius Vainora
是的,你说得对。我会修复这个问题。 - user3141121
2个回答

6
这可以被看作是行和列之和的外积,其中函数取最小值:
outer(rowSums(x), colSums(x), FUN=pmin)
##      [,1] [,2] [,3]
## [1,]    3    7    9
## [2,]    3    7   11

2
x[] <- pmin(rep(colSums(x), each = nrow(x)), rep(rowSums(x), times = ncol(x)))
x
#      [,1] [,2] [,3]
# [1,]    3    7    9
# [2,]    3    7   11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接