[R] why doesn't ifelse work ?

eric ericstrom at aol.com
Fri Apr 29 03:46:16 CEST 2011


I have the following lines of code:

ind <- rollapply(GSPC, 200, mean)
signal <- ifelse(diff(ind, 5) > 0 , 1 , -1)
signal[is.na(signal)] <- 0

I never get a value of -1 for signal even though I know diff(ind , 5) is
less than zero frequently. It looks like when diff(ind , 5) is less than
zero, signal gets set to 0 instead of - 1. Any ideas why ?  Here's some
information on ind and diff(ind, 5) :

> mode(diff(ind, 5) >0)
[1] "logical"
> class(diff(ind, 5) >0 )
[1] "zoo"
> str(diff(ind, 5) > 0 )
‘zoo’ series from 1990-05-31 to 2010-12-02
  Data: logi [1:5171, 1] FALSE FALSE FALSE FALSE FALSE FALSE ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "GSPC.Adjusted"
  Index:  Date[1:5171], format: "1990-05-31" "1990-06-01" "1990-06-04"
"1990-06-05" "1990-06-06" "1990-06-07" "1990-06-08" "1990-06-11" ...
> class(ind)
[1] "zoo"
> mode(ind)
[1] "numeric"
> str(ind)
‘zoo’ series from 1990-05-23 to 2010-12-02
  Data: num [1:5176, 1] 339 339 338 338 338 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "GSPC.Adjusted"
  Index:  Date[1:5176], format: "1990-05-23" "1990-05-24" "1990-05-25"
"1990-05-29" "1990-05-30" "1990-05-31" "1990-06-01" "1990-06-04" 

--
View this message in context: http://r.789695.n4.nabble.com/why-doesn-t-ifelse-work-tp3482680p3482680.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list