[R-es] which en un data.frame de caracteres?

Mar ía Gloria Monterubbianesi gmonterubbianesi en balcarce.inta.gov.ar
Jue Nov 24 01:21:30 CET 2011


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 en ari-solar.es>
To: Carlos Ortega <cof en qualityexcellence.es>
Cc: R-help-es en 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 en 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 en 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 en 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 en 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 en 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 en r-project.org
> >> >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >> >> >>
> >> >> >>
> >> >> >
> >> >>
> >> >>        [[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
> >> >>
> >> >>
> >> >
> >>
> >>        [[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
> >>
> >>
> >
> 
>     [[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
> 
___________________________________________________________________________

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.



Más información sobre la lista de distribución R-help-es