数组的外部功能通过矢量化功能

时间:2019-05-20 11:01:16

标签: r vectorization

我正在向量化两个参数的函数,结果是3d数组。为了获得此输出,我使用了外部函数,但始终收到错误消息(即使绑定矢量化函数也是如此)。

我尝试了cbind,在其他问题中也遇到了类似的错误代码。

n=20
mc=10
q=3

x=matrix(0,ncol=mc, nrow=n)
for (j in 1:mc){
x[,j]=arima.sim(n = n   , list(ar = .5))
}

gamhat=function(h1,h2){(1/n)*colSums((x[-c((n-(h1+h2)+1):n),]- 
colMeans(x))*(x[-c(1:h1,(n-h2+1):n),]-colMeans(x))*(x[-c(1:(h1+h2)),]- 
colMeans(x)))
}
covmat=outer(1:q,1:q,Vectorize(gamhat))

期望一个20 * 10 * 3的数组(如n x mc x q)。

1 个答案:

答案 0 :(得分:0)

尝试将SIMPLIFY=FALSE添加到Vectorize

 covmat=outer(1:q,1:q,Vectorize(gamhat, SIMPLIFY = F))

它可能不是您所期望的,因为它将是3x3的数字矢量列表,但这就是您在external的前两个参数中要的。