Rで行列を使って累積を求める方法
Rでベクトルの累積和を出す際に
行列かけてできないかな
なんてことを考えてみました。
#もしもこんなベクトルがあったとしたら x <- c(1:10) #ベクトルの大きさを調べて、その大きさの正方行列を作成 n <- length(x) A <- matrix(1,n,n) #上三角行列を0にする A[upper.tri(A)] <- 0 #Aはこんな行列 > A [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1 0 0 0 0 0 0 0 0 0 [2,] 1 1 0 0 0 0 0 0 0 0 [3,] 1 1 1 0 0 0 0 0 0 0 [4,] 1 1 1 1 0 0 0 0 0 0 [5,] 1 1 1 1 1 0 0 0 0 0 [6,] 1 1 1 1 1 1 0 0 0 0 [7,] 1 1 1 1 1 1 1 0 0 0 [8,] 1 1 1 1 1 1 1 1 0 0 [9,] 1 1 1 1 1 1 1 1 1 0 [10,] 1 1 1 1 1 1 1 1 1 1 #各成分までの累積を求める y <- A %*% x #結果はこんな > y [,1] [1,] 1 [2,] 3 [3,] 6 [4,] 10 [5,] 15 [6,] 21 [7,] 28 [8,] 36 [9,] 45 [10,] 55