将价值矩阵转换为其累积产品的矩阵

时间:2014-07-26 00:01:47

标签: r

我正在尝试计算矩阵的累积乘积,我将在下面给出我的例子。

sample <- matrix(c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5),6,5,byrow=T)
sample
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    1    2    3    4    5
[3,]    1    2    3    4    5
[4,]    1    2    3    4    5
[5,]    1    2    3    4    5
[6,]    1    2    3    4    5

我想计算每列中每行的累积产品。所以结果应该是这样的:

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    6   24  120
[2,]    1    2    6   24  120
[3,]    1    2    6   24  120
[4,]    1    2    6   24  120
[5,]    1    2    6   24  120
[6,]    1    2    6   24  120

我尝试了cumprod(示例),显然它以这种方式不能很好地与矩阵一起使用,我想知道是否有任何快捷方式可以在不使用循环的情况下执行此操作。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:3)

sample <- matrix(rep(1:5,6),ncol=5,byrow=TRUE)

(使用sample作为变量名称可能不明智,因为它也是内置函数的名称; 明智地拼出来TRUE而非使用T快捷方式)

这样做:

t(apply(sample,1,cumprod))

apply(...,1,cumprod)cumprod函数应用于每一行(&#34; 2&#34;将其应用于列)。由于apply安排其结果的方式:

  

如果对'FUN'的每次调用都返回一个长度为'n'的向量,那么'apply'将返回一个维度为'c(n,dim(X)[MARGIN])'的数组,如果'n&gt; 1’ 。

你必须转置(t())结果。