我想通过矩阵循环一个方程并将结果存储在一个立方体中,这样Cube [,, 1]就是矩阵的一个结果。
我目前写了以下内容
PercentileReturn <- array(NA, c(RetAge,length(Percentile)+1,nrow(Demo)))
for (i in 1:nrow(Demo)) {
PercentileReturn[,,i] <-
PercentileReturn[Demo[i,3]:RetAge,
1:length(Percentile),1]<-
t(apply((apply(AnnualReturns[(Demo[i,3]):RetAge,],2,cumprod)) *
Demo[i,4],1,function(x){quantile(x, Percentile, na.rm=T)}))
}
并导致以下错误
Error in PercentileReturn[, , i] <- PercentileReturn[Demo[i, 3]:RetAge, :
number of items to replace is not a multiple of replacement length
我认为这是因为我试图插入的Matrix不是3维。
基本上,一个精简版本将有一个 数组(NA,c(2,2,3))填充矩阵乘以向量 所以说
Matrix * vector c(1,2,3)
[,1] [,2]
[1,] 4 4
[2,] 4 4
将导致以下多维数据集
, , 1
[,1] [,2]
[1,] 4 4
[2,] 4 4
, , 2
[,1] [,2]
[1,] 8 8
[2,] 8 8
, , 3
[,1] [,2]
[1,] 12 12
[2,] 12 12
答案 0 :(得分:0)
那样做:
M <- matrix(1:4,2) # in your example M <- matrix(4, 2,2)
x <- 1:3
array(sapply(x, function(xi) M*xi), c(dim(M), length(x)))
答案 1 :(得分:0)
我发现第一个错误
PercentileReturn[,,i]
还必须匹配下面写的循环数据的维度
PercentileReturn[Demo[i,3]:RetAge,1:length(Percentile),i]
感谢Jogo,我将使用类似于您在另一期刊中所写的内容。