2013-06-11 2 views
0

У меня есть вектор под названием Z:Р: Сумма элементов Предыдущая

x<-matrix(rep(-0.02,12)) 
y<-matrix(rep(0.03,12)) 

a<-rbind(x,y) 
z<-cumprod(1+a) # 

начальная точка и последнюю точку в Z вектора 0.98 и 1.12. Длина серии 24. кратчайшее расстояние между ними при путешествии с шагом:

(1.12 - 0.98)/(24-1) = 0,0060355

Для того чтобы получить серию я должен добавьте 0.98 к 0.0060355, чтобы получить элемент 2. Чтобы получить элемент 3, я должен взять элемент 2 и добавить 0.0060355. Как можно сделать это наиболее эффективно в R, а не в цикле, который требует цикла и ссылки на предыдущий элемент? Это возможно?

ответ

1

Кажется, вы хотите иметь одинаковые интервалы в вашей новой последовательности. В этом случае, я думаю, вы просто хотите использовать команду seq

seq(z[1],z[length(z)],(z[length(z)]-z[1])/(length(z)-1)) 
+0

я впоследствии видел ответ Двине в: похоже, это лучший выбор по умолчанию, чем мой. – TooTone

1

Одно другое решение было бы создать новый вектор ш и использовать функцию cumsum:

w <- c(.98, rep(0.0060355,23) 
cumsum(w) 
1

Вместо того, вычисления приращения, пусть seq сделать это для вас:

seq(z[1], z[length(z)], length=length(z)) 
Смежные вопросы