Hola a todos, Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando quiero saber si cierto número está en un array utilizo la función any, y si quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar un any o un which con todo un array? Es decir, suponiendo que tengo estos dos objetos: b <- c(1,2,3,1,1,1,0,1) s <- c(1,1,1) ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición donde se encuentra? Gracias por adelantado, Alberto. [[alternative HTML version deleted]]
Hola Alberto, Quizas esto te ayude:> b <- c(1,2,3,1,1,1,0,1) > s <- c(1,1,1) > s[1] 1 1 1> b[1] 1 2 3 1 1 1 0 1> b %in% s[1] TRUE FALSE FALSE TRUE TRUE TRUE FALSE TRUE> which(b %in% s)[1] 1 4 5 6 8 Un saludo, Jorge.- 2012/4/16 Alberto Soria <>> Hola a todos, > > Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando > quiero saber si cierto número está en un array utilizo la función any, y si > quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar > un any o un which con todo un array? > > Es decir, suponiendo que tengo estos dos objetos: > > b <- c(1,2,3,1,1,1,0,1) > s <- c(1,1,1) > > ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición > donde se encuentra? > > Gracias por adelantado, > Alberto. > > [[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]]
¿algo así? sapply( 1:(length(b)-length(s)+ 1), function(i) all(s == b[i:(i+length(s)-1)])) [1] FALSE FALSE FALSE TRUE FALSE FALSE Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 16 de abril de 2012 18:04, Alberto Soria <alberto.soria en ari-solar.es> escribió:> Hola a todos, > > Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando > quiero saber si cierto número está en un array utilizo la función any, y si > quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar > un any o un which con todo un array? > > Es decir, suponiendo que tengo estos dos objetos: > > b <- c(1,2,3,1,1,1,0,1) > s <- c(1,1,1) > > ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición > donde se encuentra? > > Gracias por adelantado, > Alberto. > > [[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 >
¡Madre mía! ¡Qué rapidez! Aunque a mi me ha costado un poco entender que hacia la linea... Jorge, gracias, pero el problema de hacerlo como tú dices es que los valores que están en b y en s aparecen como TRUE y yo lo que quiero es que sólo salgan positivos aquellos arrays que estén, exactamente, s. Carlos, gracias, exactamente lo que intentaba. Un saludo, Alberto. El 16 de abril de 2012 18:09, Carlos J. Gil Bellosta <cgb@datanalytics.com>escribió:> ¿algo así? > > sapply( 1:(length(b)-length(s)+ 1), function(i) all(s => b[i:(i+length(s)-1)])) > [1] FALSE FALSE FALSE TRUE FALSE FALSE > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > El día 16 de abril de 2012 18:04, Alberto Soria > <alberto.soria@ari-solar.es> escribió: > > Hola a todos, > > > > Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando > > quiero saber si cierto número está en un array utilizo la función any, y > si > > quiero saber donde está ese número utilizo which, pero ¿Cómo puedo > utlizar > > un any o un which con todo un array? > > > > Es decir, suponiendo que tengo estos dos objetos: > > > > b <- c(1,2,3,1,1,1,0,1) > > s <- c(1,1,1) > > > > ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la > posición > > donde se encuentra? > > > > Gracias por adelantado, > > Alberto. > > > > [[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, Yo lo trataría como conjuntos... De esta forma consigo saber si "s" está en "b":> library(sets)> s<-c(1,1,1)> b<-c(1,2,3,1,1,1,0,1)> > x<-as.cset(s)> y<-as.cset(b)> > > cset_is_subset(x,y)[1] TRUEAhora, saber en qué posición se encuentra... estoy pensando una forma compacta... Saludos, Carlos Ortega www.qualityexcellence.es El 16 de abril de 2012 18:04, Alberto Soria <alberto.soria@ari-solar.es>escribió:> Hola a todos, > > Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando > quiero saber si cierto número está en un array utilizo la función any, y si > quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar > un any o un which con todo un array? > > Es decir, suponiendo que tengo estos dos objetos: > > b <- c(1,2,3,1,1,1,0,1) > s <- c(1,1,1) > > ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición > donde se encuentra? > > Gracias por adelantado, > Alberto. > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Estimado Alberto Soria Usted en el ejemplo usa: s <- c(1,1,1) Por casualidad, usted no busca ¿codones y anticodones? ¿Diseño de primers o Nada que ver? Digo esto porque en bioinformática, dentro de R y más aún en bioconductor (http://www.bioconductor.org/) las secuencias de bases o aminoácidos son el ABC, lo que expresado en otras palabras es como: b <- c(1,2,3,1,1,1,0,1) s <- c(1,1,1) Si algo de ahí le sirve ... Javier Marcuzzi -----Mensaje original----- From: Alberto Soria Sent: Monday, April 16, 2012 1:04 PM To: R-help-es en r-project.org Subject: [R-es] Encontrar patrón en array Hola a todos, Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando quiero saber si cierto número está en un array utilizo la función any, y si quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar un any o un which con todo un array? Es decir, suponiendo que tengo estos dos objetos: b <- c(1,2,3,1,1,1,0,1) s <- c(1,1,1) ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición donde se encuentra? Gracias por adelantado, Alberto. [[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
Hola Carlos he visto tu ejemplo, que me parece muy estructurado, pero no encuentro la librería sets, ¿está en el CRAN o hay que buscarla por la red?. Un saludo, Juan El 16/04/2012 18:46, Carlos Ortega escribió:> Hola, > > Yo lo trataría como conjuntos... > De esta forma consigo saber si "s" está en "b": > >> library(sets)> s<-c(1,1,1)> b<-c(1,2,3,1,1,1,0,1)> > x<-as.cset(s)> y<-as.cset(b)> > > cset_is_subset(x,y)[1] TRUE > > Ahora, saber en qué posición se encuentra... estoy pensando una forma > compacta... > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 16 de abril de 2012 18:04, Alberto Soria > <alberto.soria@ari-solar.es>escribió: > >> Hola a todos, >> >> Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando >> quiero saber si cierto número está en un array utilizo la función any, y si >> quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar >> un any o un which con todo un array? >> >> Es decir, suponiendo que tengo estos dos objetos: >> >> b<- c(1,2,3,1,1,1,0,1) >> s<- c(1,1,1) >> >> ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición >> donde se encuentra? >> >> Gracias por adelantado, >> Alberto. >> >> [[alternative HTML version deleted]] >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es-- ========================================================Juan Antonio Gil Pascual Prof. Titular de Metodología Cuantitatíva correo: jgil@edu.uned.es web: www.uned.es/personal/jgil U.N.E.D. Fac. de Educación Dpto. MIDE I c/Juan del Rosal,14 desp. 272 28040 MADRID Tel. 91 398 72 79 Fax. 91 398 72 88 Antes de imprimir este correo piense bien si es necesario hacerlo: El medioambiente es cosa de todos [[alternative HTML version deleted]]
Hola Juan, Sí, está en CRAN: sets <http://cran.at.r-project.org/web/packages/sets/index.html>Sets, Generalized Sets, Customizable Sets and Intervals Saludos, Carlos Ortega www.qualityexcellence.es El 17 de abril de 2012 07:33, Juan Antonio Gil Pascual <jgil@edu.uned.es>escribió:> > Hola Carlos he visto tu ejemplo, que me parece muy estructurado, pero no > encuentro la librería sets, ¿está en el CRAN o hay que buscarla por la red?. > > Un saludo, > > > Juan > > > El 16/04/2012 18:46, Carlos Ortega escribió: > > Hola, > > Yo lo trataría como conjuntos... > De esta forma consigo saber si "s" está en "b": > > > library(sets)> s<-c(1,1,1)> b<-c(1,2,3,1,1,1,0,1)> > x<-as.cset(s)> y<-as.cset(b)> > > cset_is_subset(x,y)[1] TRUE > > Ahora, saber en qué posición se encuentra... estoy pensando una forma > compacta... > > > Saludos, > Carlos Ortegawww.qualityexcellence.es > > El 16 de abril de 2012 18:04, Alberto Soria<alberto.soria@ari-solar.es> <alberto.soria@ari-solar.es>escribió: > > > Hola a todos, > > Esto debe ser muy sencillo, pero no lo encuentro por ningún lado. Cuando > quiero saber si cierto número está en un array utilizo la función any, y si > quiero saber donde está ese número utilizo which, pero ¿Cómo puedo utlizar > un any o un which con todo un array? > > Es decir, suponiendo que tengo estos dos objetos: > > b <- c(1,2,3,1,1,1,0,1) > s <- c(1,1,1) > > ¿Cómo puedo saber si "b" contiene, exactamente, a "s" y cual es la posición > donde se encuentra? > > Gracias por adelantado, > Alberto. > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing listR-help-es@r-project.orghttps://stat.ethz.ch/mailman/listinfo/r-help-es > > > > _______________________________________________ > R-help-es mailing listR-help-es@r-project.orghttps://stat.ethz.ch/mailman/listinfo/r-help-es > > > -- > ========================================================> Juan Antonio Gil Pascual > Prof. Titular de Metodología Cuantitatíva > correo: jgil@edu.uned.es > web: www.uned.es/personal/jgil > > U.N.E.D. > Fac. de Educación > Dpto. MIDE I > c/Juan del Rosal,14 desp. 272 > 28040 MADRID > Tel. 91 398 72 79 > Fax. 91 398 72 88 > > > Antes de imprimir este correo piense bien si es necesario hacerlo: El medioambiente es cosa de todos > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]