Hey,
I have a vector containing mostly zeroes. At varying positions are
markers that mark different channels ("B", 1, 2).
[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