Another thing you could try (*really* speeds it up) is to change "0" to NA
and use the function na.locf from the zoo package.  Check out that
function's documentation for an idea of how you might be able to do it.
I've used it for very similar tasks.  If any NA's remain (that you would
prefer be "0"), you could just change them back to 0 like

exp$Marker[is.na(exp$Marker)] <- "0"

Good luck,
Andy


On Tue, Jan 11, 2011 at 6:58 AM, B.-Markus Schuller <
b.markus.schuller@googlemail.com> wrote:

> Hey,
>
> I have a vector containing mostly zeroes. At varying positions are markers
> that mark different channels ("B", 1, 2).
>
> > head(exp$Marker, 100)
>  [1] "B" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
> "0"
>  [19] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
> "0"
>  [37] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
> "0"
>  [55] "0" "0" "0" "0" "0" "1" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
> "0"
>  [73] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
> "0"
>  [91] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
>
> I would like to change all zeroes between two markers to the marker that
> came before.
> E.g. everything after "B" shall be "B" until the 1. Then everything shall
> be 1 until the next "B" and so on. I hope you can imagine what I intend.
>
> I tried it in a loop:
>
> for(i in 1:length(exp$Marker)){
>  if(! exp$Marker[i] %in% c("B", 1, 2))
>    exp$Marker[i] <- exp$Marker[i-1]
> }
>
> but that takes forever. Can anyone point me to another solution?
> E.g. identify all so far not marked elements, like this
>
> exp$Marker[which(! exp$Marker %in% c("B", 1, 2))]
>
> and change them to the desired values. But i cannot figure out how to
> change them selectively...
>
> Thanks for your help!
>
> Cheers,
> Mango
> --
> -----------------------------------------
> B.-Markus Schuller aka Mango
>
> Sensory Ecology Group
> Max-Planck-Institute for Ornithology
> 82319 Seewiesen, Germany
>
> phone: +49 (0)8157 932 -378
> fax:   +49 (0)8157 932 -344
> email: schuller@orn.mpg.de
> http://www.orn.mpg.de/nwg/abtsiemers.html
> -----------------------------------------
> Never run for the bus.
> Never skip tea.
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>

	[[alternative HTML version deleted]]

