Думаю, в этом вопросе будет гораздо больше людей. У меня есть определенная задача, чтобы сделать наиболее эффективным способом. Мои базовые данные: - временные индексы сигналов купли-продажи - по показаниям времени времени у меня есть ROC (норма изменения) между ближайшими парами buy-sell:
r <- array(data = NA,
dim = c(5, 5),
dimnames = list(buy_idx = c(1,5,9,12,16),
sell_idx = c(3,7,10,14,19)))
diag(r) <- c(1.04,0.97,1.07,1.21,1.1)
Задача состоит в создании движущегося составного ROC на каждом возможном окне (пары buy-sell), и способ решения моей задачи в настоящее время:
for(i in 2:5){
r[1:(i-1),i] <- r[1:(i-1),i-1] * r[i,i]
}
Пока я не зацикливаюсь где-то сверху, время моего решения очень приемлемо. Есть ли способ изменить этот цикл на векторное решение? Есть ли хорошие хорошо документированные учебные пособия для изучения векторизованного типа мышления в R? - это было бы гораздо более ценным, чем одноразовое решение!
изменить 20130709:
Следующая задача, очень связанная с предыдущей задачей/примером. Применять налоговую стоимость для каждой транзакции (налог в%). Текущее решение:
diag(r[,]) <- diag(r[,]) * ((1-(tax/100))^2)
for(i in 2:dim(r)[2]){
r[1:(i-1),i] <- r[1:(i-1),i] * ((1-(tax/100))^(2*(i:2)))
}
Знаете ли вы более эффективный способ? или более правильно, если это не обрабатывает все.