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
这意味着现在可以安全地将它们加在一起。使用两个以上的维度可能会出现问题。典型的人脑不太习惯。
我有这个代码:
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
这意味着现在可以安全地将它们加在一起。使用两个以上的维度可能会出现问题。典型的人脑不太习惯。