[R] Replace values in a vector
William Dunlap
wdunlap at tibco.com
Thu Dec 3 18:06:32 CET 2009
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Farida Mostajabi
> Sent: Thursday, December 03, 2009 8:41 AM
> To: r-help at r-project.org
> Subject: [R] Replace values in a vector
>
> Hi all,
>
> I have a vector like this:
>
> x<- c(0.7, 0.1, 0, 0.2, 0.2, 0, 0, 0 , 0, 0.4, 0, 0.8, 1.8)
>
> I would like to replace the zero values with the first
> previous non zero value.
>
> my returning vector should look like this:
>
> y<-c( 0.7, 0.1, 0.1,0.2,0.2,0.2,0.2,0.2, 0.4, 0.4, 0.8, 1.8)
y is shorter than x. Shouldn't there be a run of 6 0.2s,
not 5?
> How can I do this in R without using for loop?
One way is
> isNotZero <- function(x) !is.na(x) & x!=0
> f<-function(x)x[cummax(seq_along(x) * isNotZero(x))]
> f(x)
[1] 0.7 0.1 0.1 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.8 1.8
This one drops an initial run of 0's but could be adjusted
to do something with them.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> Thank you
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list