Hola Gabriel,

La solucion planteada por Eva funciona a la perfeccion.   Sin embargo, creo
que te beneficiarias enormemente si revisaras las funciones ?ifelse  y
 ?"%in%"

Saludos,
Jorge.-


2013/1/25 Eva Prieto Castro <evapcastro@yahoo.es>

> Hola, Gabriel:
>
> La función corregida es ésta:
>
> ABI <- function(x){
> MIBpa <- x
> turb1<-5*MIBpa[match("PTUR-001",row.names(MIBpa)),]
>
> if(MIBpa[match("MGAS-001",row.names(MIBpa)),]==1||MIBpa[match("MGAS-002",row.names(MIBpa)),]==1){
> Coc2=3} else {if(MIBpa[match("MGAS-001",*row.names*
> (MIBpa)),]==0&&MIBpa[match("MGAS-002",row.names(MIBpa)),]==0){
> Coc2=0}}}
>
>
> Tenías un row en lugar de un row.names.
>
> Saludos.
>
> Eva
>
>
> --- El *jue, 24/1/13, Gabriel Trujillo Paucar <gabriel_enter@hotmail.com>*escribió:
>
>
> De: Gabriel Trujillo Paucar <gabriel_enter@hotmail.com>
> Asunto: RE: [R-es] Ayuda con el bucle if
> Para: "evapcastro@yahoo.es" <evapcastro@yahoo.es>,
> jorgeivanvelez@gmail.com
> CC: "r-help-es@r-project.org" <r-help-es@r-project.org>
> Fecha: jueves, 24 de enero, 2013 21:58
>
>
>
> Saludos una ultima pregunta, he creado una funcion en el bucle if la cual
> es:
> #####################################
>
> ABI <- function(x){
> MIBpa <- x
> turb1<-5*MIBpa[match("PTUR-001",row.names(MIBpa)),]
>
> if(MIBpa[match("MGAS-001",row.names(MIBpa)),]==1||MIBpa[match("MGAS-002",row.names(MIBpa)),]==1){
> Coc2=3} else
> {if(MIBpa[match("MGAS-001",row(MIBpa)),]==0&&MIBpa[match("MGAS-002",row.names(MIBpa)),]==0){
> Coc2=0}}}
> #####################################
> y tengo mi matriz :
> #####################################
> a=data.frame(M1=c(1,0,0),row.names=c("PTUR-001","MGAS-001","MGAS-002"))
> #####################################
> Cuando corro la funcion con mi matriz "a" me sale el siguiente mensaje:
> Error in if (MIBpa[match("MGAS-001", row(MIBpa)), ] == 0 &&
> MIBpa[match("MGAS-002",  :
>   missing value where TRUE/FALSE needed
> No se donde estaria mi error, porque lo que deseo en el bucle if es que el
> objeto "Coc2" que crea me de valor de 3 cuando en el data.frame para la
> fila"MGAS-001" o "MGAS-002" tengan valor de 1 cualquiera de los dos y en el
> caso de que ambos sean ceros, el objeto "Coc2" me de un valor de "0".
>
> Agradesco de antemano por su ayuda.
>
>
> Gabriel Antonio Trujillo Paucar
> Estudiante de Biologia
> 997603768
> ________________________________
> > Date: Thu, 24 Jan 2013 07:40:08 +0000
> > From: evapcastro@yahoo.es <http://mc/compose?to=evapcastro@yahoo.es>
> > Subject: Re: [R-es] Ayuda con el bucle if
> > To: jorgeivanvelez@gmail.com<http://mc/compose?to=jorgeivanvelez@gmail.com>;
> gabriel_enter@hotmail.com <http://mc/compose?to=gabriel_enter@hotmail.com>
> > CC: r-help-es@r-project.org<http://mc/compose?to=r-help-es@r-project.org>
> >
> > Hola Gabriel,
> >
> > Después del "else" tiene que ir una asignación o un bloque, pero no
> > puede ir directamente una condición, sin precederlo de un "if".
> >
> > Adapta tu ejemplo a esta estructura:
> >
> > if (a==1){
> > b=2
> > }else{if (a==2){
> > b=3}
> > }
> >
> > Es un modo de hacerlo.
> >
> > Saludos.
> >
> > --- El jue, 24/1/13, Gabriel Trujillo Paucar
> > <gabriel_enter@hotmail.com<http://mc/compose?to=gabriel_enter@hotmail.com>>
> escribió:
> >
> > De: Gabriel Trujillo Paucar <gabriel_enter@hotmail.com<http://mc/compose?to=gabriel_enter@hotmail.com>>
>
> > Asunto: [R-es] Ayuda con el bucle if
> > Para: jorgeivanvelez@gmail.com<http://mc/compose?to=jorgeivanvelez@gmail.com>
> > CC: "r-help-es@r-project.org<http://mc/compose?to=r-help-es@r-project.org>"
> <r-help-es@r-project.org <http://mc/compose?to=r-help-es@r-project.org>>
> > Fecha: jueves, 24 de enero, 2013 06:20
> >
> >
> > Saludos nuevamente, estaba encontrando otra forma para poder encontrar
> > la solucion al problema que escribi anteriormente y creo que la
> > encontre solo que tengo un problema con el bucle if. Tengo un marco de
> > datos como sigue:
> >
> > ######################################
> >
> >
> MIBpa=data.frame(M1=c(1,1,0),row.names=c("MGAS-001","MGAS-002","MGAS-003"))
> >
> > #########################################
> >
> > y he generado un bucle if
> >
> > ##################
> >
> >
> if(as.numeric(match("MGAS-001",row.names(MIBpa)))==1||as.numeric(match("MGAS-002",row.names(MIBpa)))==1){
>
> > Coc2=3}
> > else
> >
> (as.numeric(match("MGAS-001",row.names(MIBpa)))==0||as.numeric(match("MGAS-002",row.names(MIBpa)))==0){
>
> > Coc2=0}
> >
> > #######################
> >
> > Para que me dos resultados distintos (un "3" si se da la primera
> > situacion y un "0" si se da la segunda) pero cuando corro el bucle me
> > sale
> > el siguiente mensaje:
> >
> > Error: inesperado 'else' en "else"
> >
> > NO se en que me estoy equivocando
> >
> >
> >
> >
> >
> >
> >
> > Gabriel Antonio Trujillo Paucar
> > Estudiante de Biologia
> > 997603768
> >
> >
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es@r-project.org <http://mc/compose?to=R-help-es@r-project.org><
> http:///mc/compose?to=R-help-es%40r-project.org>
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
>
>

	[[alternative HTML version deleted]]

