[R-es] Como usar un DO WHILE o un DO UNTIL en R
Carlos J. Gil Bellosta
cgb en datanalytics.com
Vie Oct 9 16:52:46 CEST 2009
Hola, ¿qué tal?
En primer lugar, reescribiría tu programa en SAS así:
%let compvars = ( us1 us2 us3 us4 us5 us6 us7bis );
data marco12;
set eah09.marco1;
Aleat2=uniform(2);
US8=ceil(Aleat2*Mj09/2);
US9=ceil(Mj09/2+US8);
do until not( ( us8 in compvars ) and ( us9 in compvars ) );
Aleat2=uniform(2);
US8=ceil(Aleat2*Mj09/2);
US9=ceil(Mj09/2+US8);
end;
run;
Si no lo haces así, puedes tener problemas en la primera observación.
En R podrías hacer algo en la siguiente línea:
kk <- matrix( 1:6, 2, 3 ) (conjunto de entrada prueba)
foo <- function( x, usX ){
repeat{
tmp <- 2 * runif( 1 )
us8 <- ceiling( x * tmp / 2 )
us9 <- ceiling( us8 + x /2 )
if( !( us8 %in% usX | us9 %in% usX ) )
break
}
c( x, usX, us8, us9 )
}
La salida es
> t( apply( kk, 1, function( x ) foo( x[1], x[-1] ) ) )
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 1 2
[2,] 2 4 6 2 3
> kk
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Las columnas 4 y 5 se construyen a partir de la 1 (aleatoriamente) sin
y sin coincidencias con las 2 y 3.
Un saludo,
Carlos J. Gil Bellosta
El día 9 de octubre de 2009 16:01, jose ramirez costa
<joseramirezcosta en gmail.com> escribió:
> Hola quiero usar una sentencia do until o do while en R y no se como se usa.
>
> Aca esta el programa q hice en SAS, alguien me podria decir como hacerlo en
> R.
>
> Gracias
>
> data marco12; set eah09.marco1;
> do until ((us8 ne us1) & (us8 ne us2) & (us8 ne us3) & (us8 ne us4) & (us8
> ne us5) & (us8 ne us6) & (us8 ne us7bis)
> & (us9 ne us1) & (us9 ne us2) & (us9 ne us3) & (us9 ne us4) & (us9
> ne us5) & (us9 ne us6) & (us9 ne us7bis));
> Aleat2=uniform(2);
> US8=ceil(Aleat2*Mj09/2);
> US9=ceil(Mj09/2+US8);
> end;
> run;
>
> --
> José
>
> "... hoy el cambio cualitativo la liberacion, implica, cambios organicos, de
> instinto y biologicos, AL MISMO TIEMPO q cambios politicos y sociales" H. M.
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
Más información sobre la lista de distribución R-help-es