[Rd] filter(x, method="recursive") when there are NA's in x messes up

William Dunlap wdunlap at tibco.com
Mon Jul 18 23:53:30 CEST 2011


If x contains an NA then filter(x, f, method="recursive")
puts NA's and 0.0's in the output in an odd pattern.
It puts NA's in the length(f) positions ending at the position
of the input NA and it puts a run of length(f) 0.0's starting
at the position immediately after the input NA.  The values
after the 0.0's look like the recursion was restarted there.

I'd naively expect that all output values at and after the position
of the input NA to be NA, but it looks like it is trying to
restart the recursion.  I would not expect the output values
before the position of the input NA to depend on future values.
Are the NA's misplaced?

> x <- c(1:4, NA, 6:9)
> cbind(x, "1"=filter(x, 0.5, method="recursive"),
+          "2"=filter(x, c(0.5, 0.0), method="recursive"),
+          "3"=filter(x, c(0.5, 0.0, 0.0), method="recursive")) 
Time Series:
Start = 1 
End = 9 
Frequency = 1 
   x      1     2   3
1  1  1.000  1.00 1.0
2  2  2.500  2.50 2.5
3  3  4.250  4.25  NA
4  4  6.125    NA  NA
5 NA     NA    NA  NA
6  6  0.000  0.00 0.0
7  7  7.000  0.00 0.0
8  8 11.500  8.00 0.0
9  9 14.750 13.00 9.0

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 



More information about the R-devel mailing list