我正在向量化两个参数的函数,结果是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)。
答案 0 :(得分:0)
尝试将SIMPLIFY=FALSE
添加到Vectorize
,
covmat=outer(1:q,1:q,Vectorize(gamhat, SIMPLIFY = F))
它可能不是您所期望的,因为它将是3x3的数字矢量列表,但这就是您在external的前两个参数中要的。