Я применяю 100 различных имитаций модели до 83 точек данных и изучая диапазон оценок от каждой моделируемой модели для каждой точки данных.Ускорение взятия точечного произведения всех пар строк и добавление термина перехвата
Каждый расчет сам по себе является произведением 342 переменных, умноженных на 342 коэффициента плюс добавленный перехват. Код, который я написал ниже, правильно вычисляет значения, но ужасно медленный. Есть ли способ улучшить скорость обработки?
spec = read.csv(spectra)
coef = read.csv(coefficents)
shell = matrix(data=NA,ncol=101,nrow=nrow(spec))
shell = as.data.frame(shell)
heading = paste("Sim_",seq(1,100,1),sep="")
names(shell)[1] = "Filename"
names(shell)[2:101] = heading
shell[1] = spec[1]
for (i in 1:nrow(spec))
{
for (j in 1:100)
{
shell[i,j+1] = sum(spec[i,2:341]*coef[j,3:342]) + coef[j,2]
}
}
возможно дубликат http://stackoverflow.com/questions/2908822/speed-up-the-loop-operation-in-r – Megha
http://stackoverflow.com/ Вопросы/5963269/How-to-make-a-great-r-воспроизводимый пример стоит прочитать первым - у нас нет 'spec'' shell' или 'coef', и поэтому он не может делать никаких конкретных предложений без представительные данные для воспроизведения. – thelatemail
Вы добавили новые неизвестные объекты: 'спектры' и' коэффициенты' –