我有一个大矩阵(1,000,000 行 x 1,140 列),我使用 ff 包存储它。
有没有一种有效的方法可以从中计算协方差矩阵?使用 cov 函数会出现错误:
cov(X) 中的错误:同时提供“x”和“y”或类似矩阵的“x”
鉴于 cov 不理解 ff 对象,这并不奇怪。我目前正在使用一个简单的嵌套 for 循环:
covarianceMatrix <- matrix(0,nrow=ncol(ffObject),ncol=ncol(ffObject))
distinctValues <- sum(ncol(ffObject):1)
for(i in 1:ncol(ffObject))
{
for(j in i:ncol(ffObject))
{
if(i==j)
{
covarianceMatrix[i,j] <- var(ffObject[,i])
}
else
{
covarianceMatrix[i,j] <- covarianceMatrix[j,i] <- cov(ffObject[,i],ffObject[,j])
}
}
}
这有效,但速度很慢。