利用rom矢量化函数实现阵列外部函数
我正在对一个双参数函数进行矢量化,结果是一个3d数组。为了得到这个输出,我使用了外部函数,但我一直收到一条错误消息(即使我找到了向量化函数) 我尝试了cbind,就像在其他问题中看到的一样,有类似的错误代码利用rom矢量化函数实现阵列外部函数,r,vectorization,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[-
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)。尝试将
SIMPLIFY=FALSE
添加到Vectorize
covmat=outer(1:q,1:q,Vectorize(gamhat, SIMPLIFY = F))
这可能不是您所期望的,因为它将是一个3x3的数字向量列表,但这正是您在outer的前两个参数中所要求的。尝试将
SIMPLIFY=FALSE
添加到向量化
covmat=outer(1:q,1:q,Vectorize(gamhat, SIMPLIFY = F))
它可能并不完全是您所期望的,因为它将是一个3x3的数字向量列表,但这正是您在outer的前两个参数中所要求的