在R中建立协方差矩阵
我使用两个for循环来建立R中的协方差矩阵。在每两个数据点之间有两个数据向量和一个协方差函数f(x)。我的代码如下:在R中建立协方差矩阵,r,R,我使用两个for循环来建立R中的协方差矩阵。在每两个数据点之间有两个数据向量和一个协方差函数f(x)。我的代码如下: r12=function(x1,x2,H){ ra12= matrix(0,length(x1),length(x2)) for (i in 1:nrow(ra12)) { for (j in 1:ncol(ra12)) { raed12[i,j]=fx(x1[i]-x2[j],H) } } return(raed12)
r12=function(x1,x2,H){
ra12= matrix(0,length(x1),length(x2))
for (i in 1:nrow(ra12))
{
for (j in 1:ncol(ra12))
{
raed12[i,j]=fx(x1[i]-x2[j],H)
}
}
return(raed12)
}
如何使此代码更快?考虑一个sapply()
解决方案,假设fx()
是矢量化的:
r12 <- function(x1,x2,H){
return(fx(x1-x2,H))
}
mat <- sapply(vector1, r12, vector2, H)
r12对于初学者,如何更改内部For循环,以便只计算协方差矩阵的下三角或上三角?是否已将fx
矢量化?如果是这样,您的代码看起来就像是计算外部产品的右手。参见outer
@MarkL.Stone的帮助,我最初将此作为一个答案,但我认为有两个不同的向量,即当x1!=x2.我真的非常感谢你,你真的为我节省了很多时间。我似乎不需要对函数进行矢量化,而且当我对它进行矢量化时会出现错误,你能解释一下吗?