r - 向量化两个参数函数
问题描述
我有两个滞后的协方差函数类型:h1 和 h2。我试图避免 for 循环来创建协方差函数矩阵。当我输入 cov1 时,它没有给我一个矩阵。例如,如果我键入,则只是一个向量covmatrix(h1=1:5,h2=1:5)
。例如,我如何获得整个 5 x 5 矩阵。
我尝试了所有应用函数和新的矢量化函数(小写 v)
代码:
x=arima.sim(n = 100 , list(ar = .5))
cov=function(h1,h2){
(1/n)*sum((x[1:(n-h1-h2)]-mean(x))*(x[(1+h1):(n-h2)]-mean(x))*(x[(1+h1+h2):n]-mean(x)))
}
covmatrix=Vectorize(cov)
解决方案
一个简单的双倍apply
应该可以得到你想要的东西。请注意向量化函数的返回值如何等于 covmatrix 的对角线。
test <- sapply(1:5, function(x) sapply(1:5, function(y) cov(x, y)))
all.equal(diag(test), covmatrix(1:5, 1:5))
推荐阅读
- javascript - 无法使用打字稿在对象中设置属性
- c++ - Gnu make:生成所有子目录的列表
- r - R中是否有一个函数可以检查两个XStrings是否在相应位置具有某种大小(n)的匹配子字符串
- python - 使用pygame colliderect后无法移动我的精灵
- scala - 数据未通过 Avro 序列化发送到 Kafka
- xaml - 从右到左的本地化在 android 上不起作用
- javascript - 我怎样才能找到是否点击了屏幕的某个部分?
- azure-devops - 如何将 VS 2019 部署配置导入 Azure devops
- javascript - POST格式的javascript var LZstring
- c++ - OpenCL 中的图像灰度