Есть ли способ ускорить этот цикл в r?
V=array(NA, dim=c(nrow(pixDF), n))
for(i in 1:n)
{
sdC<-sqrt(det(Cov[,i,]))
iC<-inv(Cov[,i,])
V[,i]<-apply(pixDF,1,function(x)(sdC*exp(-0.5*((x-Mean[i,])%*%iC%*%as.matrix((x-Mean[i,]))))))
}
, где в этом случае pixDF
- это матрица с 490000 строками и 4 столбцами, заполненными двойными числами. n
= 5. Cov
- массив (4,5,4), заполненный "doubles". Mean
- это массив (5,4), заполненный также двойными числами.
Этот цикл занимал около 30 минут на моем компьютере. (до редактирования). Прямо сейчас это занимает 1 минуту.