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]]
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]]
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]]
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]]
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]]
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]]
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]]
Hola, Perdona, pero la solución que propuse funciona correctamente si hay que buscar otro string que no esté en la fila 1 y columna 1. Este otro sí que funciona:> foo<-function(x) match(x,c(''mal'')) > > r.m.tmp<-apply(data,1,foo) > r.m.tmp[is.na(r.m.tmp)]<-0 > r.end<-apply(r.m.tmp,1,max) > col.dat<-colnames(data)[r.end==max(r.end)] > > c.end<-apply(r.m.tmp,2,max) > row.dat<-rownames(data)[c.end==max(c.end)] > > col.dat[1] "res"> row.dat[1] "2"> >> foo<-function(x) match(x,c(''regular'')) > > r.m.tmp<-apply(data,1,foo) > r.m.tmp[is.na(r.m.tmp)]<-0 > r.end<-apply(r.m.tmp,1,max) > col.dat<-colnames(data)[r.end==max(r.end)] > > c.end<-apply(r.m.tmp,2,max) > row.dat<-rownames(data)[c.end==max(c.end)] > > col.dat[1] "res"> row.dat[1] "3"> >Saludos, Carlos Ortega www.qualityexcellence.es El 23 de noviembre de 2011 18:54, Alberto Soria <alberto.soria@ari-solar.es>escribió:> 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]]
María Gloria Monterubbianesi
2011-Nov-24 00:21 UTC
[R-es] which en un data.frame de caracteres?
Hola Alberto, Completando algunas de las sugerencias dadas, esto funcionaría, y parece sencillo. Van dos ejemplos (y el data usado):> datainput 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 noacabo> 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íaalgunos> 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.
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]]