Gracias a los dos. He creado una función y parece que funciona bien:

search.var <- function(x,var) {
    row.res <- rownames(x[which(x==var,arr.ind=TRUE)[1],])
    col.res <- colnames(x[which(x==var,arr.ind=TRUE)[2]])
    res <- data.frame(row=row.res,col=col.res)
    return(res) }

Un saludo,
Alberto.


El 24 de noviembre de 2011 01:21, María Gloria Monterubbianesi <
gmonterubbianesi@balcarce.inta.gov.ar> escribió:

> Hola Alberto,
>
> Completando algunas de las sugerencias dadas, esto
> funcionaría, y parece sencillo. Van dos ejemplos (y el
> data usado):
>
> > data
>  input output     res otra
> 1  hola     si    bien  uno
> 2 adios            mal  dos
> 3         <NA> regular
>
> > rownames(data[which(data=="hola",arr.ind=TRUE)[1],])
> [1] "1"
> > colnames(data[which(data=="hola",arr.ind=TRUE)[2]])
> [1] "input"
> >
> rownames(data[which(data=="regular",arr.ind=TRUE)[1],])
> [1] "3"
> >
> colnames(data[which(data=="regular",arr.ind=TRUE)[2]])
> [1] "res"
>
> Saludos
> Gloria
>
>
>
>
>
>
> From: Alberto Soria <alberto.soria@ari-solar.es>
> To: Carlos Ortega <cof@qualityexcellence.es>
> Cc: R-help-es@r-project.org
> Subject: Re: [R-es] which en un data.frame de caracteres?
> Date: Wed, 23 Nov 2011 18:54:53 +0100
>
> > Perfecto Carlos, muchas gracias!
> >
> > El 23 de noviembre de 2011 18:40, Carlos Ortega
> > <cof@qualityexcellence.es>escribió:
> >
> > > Hola,
> > >
> > > Esta es otra manera:
> > >
> > > > foo<-function(x) match(x,c('hola'))> >
> > r.m.tmp<-apply(data,1,foo) >
> > col.dat<-colnames(data)[max(r.m.tmp,na.rm=T)]>
> > row.dat<-rownames(data)[max(r.m.tmp,na.rm=T)]> >
> > col.dat[1] "input"> row.dat[1] "1"> >
> > >
> > >
> > > Saludos,
> > > Carlos Ortega
> > > www.qualityexcellence.es
> > >
> > > El 23 de noviembre de 2011 17:09, Alberto Soria <
> > > alberto.soria@ari-solar.es> escribió:
> > >
> > > El problema ocurre cuando el data.frame no es cuadrada.
> > Entonces el código >> que escribí antes no sirve.
> Parece
> > que hay que utilizar la función >> arrayInd, pero no
> acabo
> > de entender el argumente .dim. Gracias Jorgue, >> podría
> > hacer: >>
> > >> as.numeric(row.names(data[data == "hola",]))
> > >>
> > >> Pero sólo tendría la fila.
> > >>
> > >> El 23 de noviembre de 2011 17:01, Jorge I Velez
> > >> <jorgeivanvelez@gmail.com>escribió:
> > >>
> > >> > Hola Alberto,
> > >> >
> > >> > Adicional a la sugerencia de Carlos, podrias
> > intentar: >> >
> > >> > data[data == "hola",]
> > >> >
> > >> > Un saludo,
> > >> > Jorge.-
> > >> >
> > >> >
> > >> > 2011/11/23 Alberto Soria <>
> > >> >
> > >> > Hola Diego,
> > >> >>
> > >> >> Efectivamente funciona como tú dices. No obstante,
> > con mi data.frame >> no me
> > >> >> devuelve valores. Creía que era porque tenía
> algunos
> > valores en blanco >> >> pero
> > >> >> así también funciona. Por lo menos se que which
> > funciona bien: >> >>
> > >> >> > data <-
> > >> >>
> > >>
> data.frame(input=c("hola","adios",""),output=c("si",""
> > ,""),res=c("bien","mal","regular"))> >> >>
> > which(data=="hola",arr.ind=TRUE)     row col >> >>
> [1,]
> > 1   1 >> >>
> > >> >> Gracias,
> > >> >> Alberto.
> > >> >>
> > >> >>
> > >> >>
> > >> >> El 23 de noviembre de 2011 16:36, Diego Forteza
> > >> >> <diegoforteza@gmail.com>escribió:
> > >> >>
> > >> >> > Hola Alerto,
> > >> >> >
> > >> >> > La función which tiene un parámetro (arr.ind)
> que
> > por defecto es >> FALSE,
> > >> >> si
> > >> >> > lo cambias a TRUE debería ayudarte.
> > >> >> >
> > >> >> > which(x, arr.ind = TRUE)
> > >> >> >
> > >> >> > Saludos,
> > >> >> > Diego
> > >> >> >
> > >> >> >
> > >> >> > 2011/11/23 Alberto Soria
> > <alberto.soria@ari-solar.es> >> >> >
> > >> >> >> Hola a todos,
> > >> >> >>
> > >> >> >> Tengo un "data.frame" de algunas columnas, el
> > cual contiene objetos >> de
> > >> >> >> tipo
> > >> >> >> "character". Me interesa encontrar las coordendas
> > de un cierto >> objeto
> > >> >> >> dentro del "data.frame". Eso para arrays o para
> > matrices lo hago >> con la
> > >> >> >> función which(). Pero no consigo hacerlo para
> > esta caso ¿alguna >> >> sugerencia
> > >> >> >> para realizarlo sin tener que utilizar bucles?
> > >> >> >>
> > >> >> >> Gracias por adelantado.
> > >> >> >>
> > >> >> >> Un saludo,
> > >> >> >> Alberto Soria.
> > >> >> >>
> > >> >> >>        [[alternative HTML version deleted]]
> > >> >> >>
> > >> >> >>
> > >> >> >> _______________________________________________
> > >> >> >> R-help-es mailing list
> > >> >> >> R-help-es@r-project.org
> > >> >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> > >> >> >>
> > >> >> >>
> > >> >> >
> > >> >>
> > >> >>        [[alternative HTML version deleted]]
> > >> >>
> > >> >>
> > >> >> _______________________________________________
> > >> >> R-help-es mailing list
> > >> >> R-help-es@r-project.org
> > >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> > >> >>
> > >> >>
> > >> >
> > >>
> > >>        [[alternative HTML version deleted]]
> > >>
> > >>
> > >> _______________________________________________
> > >> R-help-es mailing list
> > >> R-help-es@r-project.org
> > >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> > >>
> > >>
> > >
> >
> >     [[alternative HTML version deleted]]
> >
> >
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> ___________________________________________________________________________
>
> Aviso:
>
> El contenido del presente e-mail y sus posibles adjuntos pertenecen al
> INTA y pueden contener información confidencial. Si usted no es el
> destinatario original de este mensaje y por este medio pudo acceder a dicha
> información, por favor solicitamos contactar al remitente y eliminar el
> mensaje de inmediato. Se encuentra prohibida la divulgación, copia,
> distribución o cualquier otro uso de la información contenida en el
> presente e-mail por parte de personas distintas al destinatario.
>
>
> This e-mail contents and its possible attachments belong to INTA and may
> contain confidential information. If this message was not originally
> addressed to you, but you have accessed to such information by this means,
> please contact the sender and eliminate this message immediately.
> Circulation, copy, distribution, or any other use of the information
> contained in this e-mail is not allowed on part of those different from the
> addressee.
>
>
> Antes de imprimir este mensaje, asegúrese de que sea necesario. Proteger
> el medio ambiente está también en su mano.
>

	[[alternative HTML version deleted]]

