我正在尝试计算矩阵的累积乘积,我将在下面给出我的例子。
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(示例),显然它以这种方式不能很好地与矩阵一起使用,我想知道是否有任何快捷方式可以在不使用循环的情况下执行此操作。
非常感谢你的帮助!
答案 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()
)结果。