Я пытаюсь написать функцию, которая перебирает значения открытия и закрытия в объекте xts. Функция должна возвращать 1, когда закрытие i + 1 больше, чем открытие i.
Вот функция
longsig <- function(x){
ls <- numeric(length=nrow(x))
for(i in 1:length(ls)){
if(Cl(x[i+1]) > Op(x[i])) {
ls[i] <- 1
} else {
ls[i] <- 0
}
}
return(ls)
}
и вот часть данных, к которой я пытаюсь применить эту функцию. Это объект XTS.
Open High Low Close
2014-01-03 116.9000 119.6400 114.5300 116.9925
2014-01-10 116.9463 116.9463 111.9700 113.8825
2014-01-17 115.4144 115.5700 112.1500 114.0975
2014-01-24 114.7559 118.3400 114.1500 116.0950
2014-01-31 115.4255 119.0900 115.4255 117.5475
2014-02-07 116.4865 120.7400 116.4865 118.9450
Функция возвращает следующую ошибку
Error in if (Cl(x[i + 1]) > Op(x[i])) { : argument is of length zero
Очевидно, что я делаю что-то не так, применяя этот цикл к объекту xts, но у меня очень ограниченный опыт работы с xts. Любая помощь будет принята с благодарностью.