矩阵的行乘积和矩阵的列和

问题描述 投票:6回答:3

我有一个大小为TxR的矩阵,我正在寻找一个命令来做行的产品(返回产品的1 x R向量)。之后我想总结一下列,即总结R项。

在Matlab中,这将完成类似于这个总和(prod(A,1),2),但我不知道R中的代码。

我希望它有意义。

谢谢

r matrix
3个回答
11
投票
sum(apply(A, 1, prod))

在行之间应用prod函数(1是边距),对结果求和。


8
投票

在基地R:

mat <- matrix(c(1,2,3,
                4,5,6,
                7,8,9), byrow = TRUE, ncol = 3)

R <- apply(mat, 1, prod)
R
sum(R)

R> R
[1]   6 120 504
R> sum(R)
[1] 630

在CRAN上有一个很好的替代方案,名为matrixStats,旨在添加其他矩阵函数的快速版本,以补充基础R中的rowSumscolSums(及其平均等价物)。

install.packages("matrixStats") ## install it from CRAN

## load matrixStats
library("matrixStats")
rowProds(mat)

R> rowProds(mat)
[1]   6 120 504
R> sum(rowProds(mat))
[1] 630

0
投票

只有部分答案,但使用rowSums可以构建你的on-base-product-function函数:

mat <- matrix(c(1,1,0,
                1,3,-6,
                12,12,12), byrow = TRUE, ncol = 3)

# function based on rowSums
my_rowprod <- function(x) ifelse((rowSums(x < 0) %% 2) == 1, -1, 1) * exp(rowSums(log(abs(x))))

my_rowprod(mat)
#[1]    0  -18 1728
© www.soinside.com 2019 - 2024. All rights reserved.