Folks,
 
If I have a vector such as the following:
 
x <- c(0, -1, -1, -1, 0, 0, 1, -1, 1, 0)
 
and I want to replace the zeroes by the nearest non-zero number to the
left, is there a more elegant way to do this than the following loop?
 
y <- x
for (i in 2 : length(x))
{
    if (y[i] == 0) {
        y[i] <- y[i - 1]
    }
}
 
> y
[1]  0 -1 -1 -1 -1 -1  1 -1  1  1
 
You can see the first zero is left as is, the next two zeroes become -1,
which is the closest non-zero to the left of them, and the last zero
becomes 1.
 
Cheers,
Murali

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to