Это хвост объекта xts:
SPY.Close mavg dn.1 up.1
2011-02-16 133.85 132.446 128.8502 130.9545
2011-02-17 134.25 132.793 129.0212 131.2241
2011-02-18 134.53 133.131 129.2198 131.5016
2011-02-22 131.83 133.117 129.4104 131.6236
2011-02-23 131.02 132.962 129.5961 131.7072
2011-02-24 130.93 132.828 129.7575 131.7792
Учитывая простую вложенную функцию ifelse (), переданную через каждый день:
signal <- ifelse(t$mavg > t$up.1, 1, ifelse(t$mavg < t$dn.1, -1, 99))
Значение из этого правила может бытьдобавлено к объекту:
t$signal = signal
Получение нового объекта (я взял раздел для иллюстрации):
SPY.Close mavg dn.1 up.1 signal
2010-11-18 119.96 120.713 118.17955 119.99845 1
2010-11-19 120.29 120.470 118.33112 120.09688 1
2010-11-22 120.19 120.240 118.47911 120.18489 1
2010-11-23 118.45 119.924 118.55112 120.20888 99
2010-11-24 120.20 119.734 118.63565 120.27635 99
Как переписать вложенный оператор ifelse ()так что каждый раз, когда он оценивается в 99, вместо этого возвращается значение предыдущего дня?
ПРИМЕЧАНИЕ: если вложенный оператор ifelse () не может быть записан так, как указано, из-за парадокса курица / яйцо, тогда отдельныйЗаявление превратить 99 в 1 будет достаточно.