[R-es] Fwd: if dentro de for

javier.ruben.marcuzzi en gmail.com javier.ruben.marcuzzi en gmail.com
Jue Mar 7 13:29:35 CET 2013


Hola

Eso me recuerda a bioinformática y el diseño de primers, si estas en eso, R 
tiene muchos trabajos al respecto, para ahorrarle trabajo ¿no le sirve 
ninguno?

Javier Marcuzzi

On Wednesday 06 March 2013 13:15:18 David Sanchez Rodriguez wrote:
> Os reenvio mail que envie a Isidro de la lista,
> 
> Tal y como intuyes, estoy comenzando a programar en R, ya que estoy
> programandoen java para estraer unos datos y posteriormente analizarlos con
> R para generar graficas.
> 
> Antes he pasado el codigo completo de lo que quiero hacer (o es mi idea) y
> el cual te pego de nuevo aqui abajo.
> 
> Me encuentro con un fichero llamado datos.fna el cual tiene virias filas,
> en las que con una secuencia formada por estas cuatro letras A,C,T,G  las
> cuales aparecen de forma aleatoria y repetida.
> 
> Por ello, tengo que recorrer cada fila, y encontrar cuantas veces aparece
> 3, 4, 5, ... hasta 12 veces A, C T y G seguidas.
> 
> Es decir, tengo que buscar cuantas AAA tengo en todo el fichero.
> Al mismo tiempo ver cuantas CCC TTT y GGG tengo.
> Una vez que tengo eso, que lo voy guardando los resultaods en mi matriz,
> pues paso a buscar cuantas veces tengo cuatros "A" es decir AAAA
> 
> La matrizgraf3 lo que representa, es en cada columna represento cada una de
> las letras. En las filas represento cuantos elementos tengo en total del
> tipo de la secuencia. Por ello, en mi primer elemento de la matriz, hace
> referencia a cuantas veces tengo AAA dentro de mi fichero.
> 
> library("seqinr")
> 
> readseq <- read.fasta(file = "datos.fna")
> numSeq3 <- length(readseq)
> 
> # Obtenemos la secuencia de valores que repiten 3 veces
> # o más veces seguidas la misma secuencia.
> # En nuestro caso tan solo queremos las AAA CCC GGG TTT
> # Vamos a tener 9 filas, ya que analizamos desde cuando
> # tenemos 3 caracteres juntos hasta cuando tenemos 12 valores
> # del mismo caracter seguidos.
> # Tan solo tenemos 4 columnas, ya que cada una de ellas
> # identifica a cada una de las variables: a, c, g, t
> # Recorremos el todo el fichero, hasta el final de sequencias.
> 
> matrizgraf3 <- matrix(0, nr=9, nc=4)
> 
> 
> # Nos definimos un string en el que le vamos a ir concatenando
> # letras al final, para que asi nos sirva de elemento de busqueda
> # para que en cada iteracion nos diga cuantos elementos coinciden
> # con esa cantidad de letras dentro de cada una de las secuencias.
> listaa <- "aaa"
> listac <- "ccc"
> listag <- "ggg"
> listat <- "ttt"
> 
> for(j in c(1:numSeq3)){
> for (i in c(1:9)){
> for(k in c(1:4)){
>  # Como comenzamos en 1, y queremos buscar
> # a partir del elemento 3, por eso le vamos
> # a incrementar en 2 elementos
>  auxiliar <- count(readseq[j],i+2)
> 
> aux_a <- auxiliar["listaa"]
>  if(aux_a > 0){
> matrizgraf3[i][k] = matrizgraf3[i][k] + 1
> listaa <- paste(listaa, "a", sep ="")
>  }
>  aux_c <- auxiliar["listac"]
>  if(aux_c>0){
> matrizgraf3[i][k] = matrizgraf3[i][k] + 1
> listac <- paste(listac, "c", sep="")
>  }
> 
> aux_g <- auxiliar["listag"]
> if(aux_g>0){
>  matrizgraf3[i][k] = matrizgraf3[i][k] + 1
> listag <- paste(listag, "g", sep="")
>  }
> 
> aux_t <- auxiliar["listat"]
> if(aux_t>0){
>  matrizgraf3[i][k] = matrizgraf3[i][k] + 1
> listat <- paste(listat, "t", sep="")
>  }
>  }
> }
> }
> 
> #GRAPHICO TRES
> 
> barplot(matrizgraf3,beside=TRUE,space=c(0.1,0.4),names.arg=c("3","4","5","6"
> ,"7","8","9","10","11","12","13","14","15","16","17","18","19","20"),col=c("
> green", "blue", "red", "orange","black"),axes = TRUE, axisnames = TRUE,
> xlab= "Homopolymer length", ylab = "counts")
> 
> legend("topright", c("T","A", "G","C","Other"), cex=0.4,
>     bty="n", lty=c(1,1), lwd=c(0.8,0.8),col=c("green", "blue", "red",
> "orange","black"));
> 
> title(main="Homopolymer counts", cex.main = 1,font.main= 3)
> 
> #FIN GRAPHICO TRES
> 
> dev.off()
> 
> Gracias
> 
> Saludos
> 
> David Sanchez Rodriguez
> 
> Web personal: www.dasanro.es
> Blog: www.laideafeliz.es
> Twitter: @dasanro <https://twitter.com/#!/dasanro>
> 
> 
> El 6 de marzo de 2013 12:20, Isidro Hidalgo <ihidalgo en jccm.es> escribió:
> 
> Hola, David:****
> 
> > Te escribo fuera de lista, a ver si te puedo echar un cable... No está muy
> > "sano" el código que presentas, pero no pasa nada:****
> > 
> > - Me imagino que quieres asignar un vector mediante: readseq <-
> > *c(*"aaaaaaaaaaa", "aaa", "aa")****
> > 
> > - ¿Dónde está el bucle "for" de los índices “i” y “j” de la siguiente
> > sentencia?: auxiliar <- count(readseq[j],i+2)****
> > 
> > ** **
> > 
> > Creo que lo que te pasa es que vienes de programar en otro lenguaje y
> > estás empezando en R. Si es así, ¿Qué quieres hacer? Si me lo dices, quizá
> > pueda ayudarte a escribir en R cómo se hace.****
> > 
> > Un saludo.****
> > 
> > ** **
> > 
> > Isidro Hidalgo Arellano****
> > 
> > Observatorio Regional de Empleo****
> > 
> > Consejería de Empleo y Economía****
> > 
> > ihidalgo en jccm.es****
> > 
> > http://www.jccm.es****
> > 
> > ** **
> > 
> > ** **
> > 
> > > -----Mensaje original-----****
> > > 
> > > De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-****
> > > 
> > > project.org] En nombre de David Sanchez Rodriguez****
> > > 
> > > Enviado el: miércoles, 06 de marzo de 2013 11:24****
> > > 
> > > Para: r-help-es en r-project.org****
> > > 
> > > Asunto: [R-es] if dentro de for****
> > > 
> > > ****
> > > 
> > > Buenas,****
> > > 
> > > ****
> > > 
> > > Me encuentro con el mismo problema, de que me dice que el argumento del*
> > 
> > ***
> > 
> > > if no es un "valor ausente donde TRUE/FALSE es necesario"****
> > > 
> > > ****
> > > 
> > > Este es mi codigo de pruebas.****
> > > 
> > > ****
> > > 
> > > readseq <- "aaaaaaaaaaa", "aaa", "aa")****
> > > 
> > > auxiliar <- count(readseq[j],i+2)****
> > > 
> > > aux_a <- auxiliar["listaa"]****
> > > 
> > > if(aux_a > 0){****
> > > 
> > > matrizgraf3[i][k] = matrizgraf3[i][k] + 1 listaa <- paste(listaa, "a",**
> > 
> > **
> > 
> > > sep ="") }****
> > > 
> > > ****
> > > 
> > > ****
> > > 
> > > ****
> > > 
> > > Gracias****
> > > 
> > > ****
> > > 
> > > Saludos,****
> > > 
> > > ****
> > > 
> > > David Sanchez Rodriguez****
> > > 
> > > ****
> > > 
> > > Web personal: www.dasanro.es****
> > > 
> > > Blog: www.laideafeliz.es****
> > > 
> > > Twitter: @dasanro <https://twitter.com/#!/dasanro>****
> > > 
> > > ****
> > > 
> > >     [[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]]



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