usar - vectores en r
Aumenta el contador en un bucle for en R (1)
ifelse
está vectorizado, por lo que no es necesario utilizar un for-loop
aquí. Esta es la forma en que debes usarlo:
set.seed(10)
x <- runif(20)
f <- ifelse(x<0.5, ''a'', ''b'')
Luego use la table
para contar la ocurrencia:
table(f)
f
a b
13 7
Para obtener n1
:
n1 <- table(f)[[''a'']]
EDITAR OP quiere cambiar la muestra de acuerdo a la ocurrencia de a y b. Deberías usar if
y else
ifelse
. También debe preasignar memoria para el vector f.
n1 <- 0 ; n2 <- 0
N <- 20
f <- vector(mode=''character'',N)
set.seed(10)
x<- runif(N)
for(i in seq(N)) {
if (x[i] <0.5){
f[i] <- ''a''
n1 <- n1 +1
} else {
f[i] <- ''b''
n2 <- n2 +1
}
if((n1-n2)==2) x <- runif(N) ## condition to regenerate sample
}
Hola a todos, tengo un problema con un contador que he creado en un bucle for. Aquí está el código.
n1<- 0
n2<- 0
n<- 20
f<- rep(NA,20)
set.seed(10)
x<- runif(20)
for(i in 1:20) {
f[i]<- ifelse(x[i]<0.5, ''a'', ''b'')
if((n1-n2)==2) {
break
}
if(f[i]==''a'')
n1<- n1 + 1 else n2<- n2 + 1 # n1 counts a''s n2 counts b''s
}
[1] "b" "a" "a" "b" "a" "a" "a" NA NA NA NA NA NA NA NA NA NA NA NA NA
Como puede ver en el resultado, el número de a''s = 5 y b''s = 2. Pero cuando llamo a n1 y n2, devuelve 4 para n1, lo cual es incorrecto. ¿Porqué es eso? ¿Cómo me equivoco? Gracias por adelantado .
Comienzo a muestrear a''s y b con una probabilidad de 0.5 .20 total. En algún punto que no sé de antemano, el número de a - el número de b excede 2. Cuando esto sucede, quiero que la probabilidad de muestreo cambie a 0.2. Eso es lo que estoy tratando de lograr.