我有一个大小为TxR的矩阵,我正在寻找一个命令来做行的产品(返回产品的1 x R向量)。之后我想总结一下列,即总结R项。
在Matlab中,这将完成类似于这个总和(prod(A,1),2),但我不知道R中的代码。
我希望它有意义。
由于
答案 0 :(得分:11)
sum(apply(A, 1, prod))
在行之间应用prod函数(1是边距),对结果求和。
答案 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 ,旨在添加其他矩阵函数的快速版本,以补充rowSums
,colSums
(和它们的平均等价物)基地R。
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
答案 2 :(得分:0)
仅是部分答案,但是使用rowSums可以在base-R row-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