R中不同维度数组的总和

Sum of arrays of different dimension in R

我有这个代码:

k = 20
rho = 0.5
pi_greco = array(rep(1/k, k), c(1,20,50))

pi_greco_x <- function(k, rho, pi_greco){
  E = array(diag(k),c(20, 20, 50))
  E[k,k,] = 0
  prob = (1-rho)*pi_greco + rho*E
  return(prob)
}

并且在概率上我需要将 pi_greco 的每个维度 1x20 的矩阵(乘以 1-rho)与 E 的每个维度 20x20 的矩阵(乘以 rho)相加,以获得 50 个不同的矩阵在概率。但是我该怎么做呢?

等于说我愿意做

prob = (1-rho)*pi_greco[,,1] + rho*E[,,1]

但是所有 50 次都没有使用 for 循环

提前致谢。

考虑一下:



k = 3
rho = 0.5
pi_greco = array(rep(1/k, k), c(1,20,50))

pi_greco_x <- function(k, rho, pi_greco){
  E = array(diag(k),c(k, 20, 50))
  E[k,k,] = 0

  p_rows <- Reduce(
      f=function(a,b){ abind( a, (1-rho)*pi_greco, along=1 ) },
      x=1:k,
      init=NULL
  )

  prob <- p_rows + rho*E
  return(prob)
}

pi_greco_x( k, rho, pi_greco )

我使用 abind 20 次将 1x20x50 重复为 20x20x50

这意味着现在可以安全地将它们加在一起。使用两个以上的维度可能会出现问题。典型的人脑不太习惯。