[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