Ich denke, es ist ein ziemlich grundlegendes Problem, aber ich möchte um zu sehen, ob jemand eine elegantere Lösung finden kann. Vielleicht durch Vermeiden der for-Schleife.Konvertieren (0,1,0, 0, 1, 1, 1) zu (0, 0, 0, 1, 0, 1, 2) in R
Ich möchte eine Funktion haben, die einen Vektor von 1 und 0 als Eingabe nimmt und einen Vektor gleicher Länge zurückgibt, der zählt, wie viele vorherige Positionen die gleiche Nummer gewesen ist.
Ein ziemlich unelegant Weg dies zu tun ist:
count_me <- function(x) {
count_vector <- numeric(length(x))
for(i in 2:length(x)) {
if(x[i] == x[i-1]) count_vector[i] <- count_vector[i-1] + 1
}
count_vector
}
welche gibt genau das, was ich will:
> (p <- sample(c(0,1), size = 10, replace = TRUE))
[1] 0 1 0 1 1 0 0 1 1 1
> count_me(p)
[1] 0 0 0 0 1 0 1 0 1 2