[R-sig-eco] change values of a vector selectively
B.-Markus Schuller
b.markus.schuller at googlemail.com
Tue Jan 11 15:58:10 CET 2011
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 at 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
More information about the R-sig-ecology
mailing list