# [R] special recursive filter

Konrad Schubert infochat at gmx.net
Fri Jul 29 17:16:21 CEST 2011

```Hi,
I have a question about a special recursive filter problem.

What I have:

- given variables:
x: time series with rather randomly occuring '0' and '1'
wait: non negative integer

- a working but ineffectiv implementation (see below)

How the implementation works (what I want):

The filter should drill holes of distance 'wait' between the '1' in x, e.g.

x = 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1
wait = 2

desired result:

result = 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1

working implementation:

#*************************************************************************
# basic informations
#*************************************************************************

# length of input vector
lengthX <- length(x)

# stop times for the recursive filter indices
stopS <- 1:lengthX + wait - 1

# initialize the result and the intermediate result vector
# with additional length for recursive filtering
result <- y <- numeric(lengthX + wait)

#*************************************************************************
# filter
#*************************************************************************

# recursive filter function
for(i in 1:lengthX){

# present ('x') and lag ('y') filtering
ans <- x[i] + sum(y[i:stopS[i]])

# check for the right filter answer
if( ans == 1){
y[wait + i] <- -1
result[wait + i] <- 1
}
}

#*************************************************************************
# post calculation
#*************************************************************************

# remove the additional length for recursive filtering
# from the returning vector
result <- result[-(1:wait)]

-----------------------------------------------------------------------

Is there anyone how has a better idea?
Thank you for your help,
Thomas.
--

```