Eric
2011-Dec-22 16:57 UTC
[R-es] Como calcular la media de una gran cantidad de flow.frame en un ciclo "for" ...
Queridos amigos tengo el siguiente problema: Tengo alrededor de 100 archivos del tipo flowFrame (datos de citometria) que he importado a R. Estos archivos tienen 6 columnas y 10.000 (diez mil) filas. Tengo que calcular el promedio de la quinta columna y graficarlo contra el promedio de la segunda columna. La segunda columna tiene el mismo valor para las 10.000 filas en cada archivo asi es que sabemos el promedio de antemano, pero quiero incluirlo en el calculo de todos modos. Para calcular las medias he creado el siguiente nano-algoritmo que incluye un ciclo "for" : lista <- ls(pattern="dat12") # para usar solo los archivos que son del mes 12 que son alrededor de 100 medias <- c(1:length(lista)) for (i in length(lista)){ medias[i] <- mean(exprs(lista[i][,5])) } pero obtengo el siguiente error: Error in exprs(lista[i][, 5]) : error in evaluating the argument ''object'' in selecting a method for function ''exprs'': Error in lista[i][, 5] : incorrect number of dimensions parece que usar *lista[i][,5]* como argumento de la funcion exprs es un error , porque lista[i] no se comporta como un nombre de archivo como yo crei que haria y esto es lo que no se como hacer, es decir, como se hace para poder utilizar los nombres contenidos en el vector "lista" y construir el argumento de la funcion "exprs" correctamente ... o como se puede hacer de otro modo esto mismo?? me explico bien ?? entre parentesis es la primera vez que trato de hacer un ciclo en R y quiza hasta eso este mal ... Saludos y muchas gracias por su ayuda, Eric. -- Nota: las tildes se han omitido para evitar conflictos con algunos lectores de correo. * Un economista es un experto que sabrá mañana por qué las cosas que predijo ayer no han sucedido hoy (Laurence Peter). * SATYÂT NÂSTI PARO DHARMAH [[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2011-Dec-22 17:02 UTC
[R-es] Como calcular la media de una gran cantidad de flow.frame en un ciclo "for" ...
Hola, ¿qué tal? No conozco los detalles del objeto al que te refieres, pero creo que la expresión adecuada no es exprs(lista[i][,5])) sino exprs( lista[[i]] )[,5] Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 22 de diciembre de 2011 17:57, Eric <ericconchamunoz en gmail.com> escribió:> Queridos amigos tengo el siguiente problema: > > Tengo alrededor de 100 archivos del tipo flowFrame (datos de citometria) > que he importado a R. Estos archivos tienen 6 columnas y 10.000 (diez mil) > filas. Tengo que calcular el promedio de la quinta columna y graficarlo > contra el promedio de la segunda columna. La segunda columna tiene el mismo > valor para las 10.000 filas en cada archivo asi es que sabemos el promedio > de antemano, pero quiero incluirlo en el calculo de todos modos. Para > calcular las medias he creado el siguiente nano-algoritmo que incluye un > ciclo "for" : > > lista <- ls(pattern="dat12") # para usar solo los archivos que son del > mes 12 que son alrededor de 100 > medias <- c(1:length(lista)) > for (i in length(lista)){ > medias[i] <- mean(exprs(lista[i][,5])) > } > > pero obtengo el siguiente error: > > Error in exprs(lista[i][, 5]) : > error in evaluating the argument 'object' in selecting a method for > function 'exprs': Error in lista[i][, 5] : incorrect number of dimensions > > parece que usar *lista[i][,5]* como argumento de la funcion exprs es un > error , porque lista[i] no se comporta como un nombre de archivo como yo > crei que haria y esto es lo que no se como hacer, es decir, como se hace > para poder utilizar los nombres contenidos en el vector "lista" y construir > el argumento de la funcion "exprs" correctamente ... o como se puede hacer > de otro modo esto mismo?? > > me explico bien ?? > > entre parentesis es la primera vez que trato de hacer un ciclo en R y quiza > hasta eso este mal ... > > Saludos y muchas gracias por su ayuda, > > Eric. > > > > > > > > -- > Nota: las tildes se han omitido para evitar conflictos con algunos lectores > de correo. > > * Un economista es un experto que sabrá mañana por qué las cosas que predijo > ayer no han sucedido hoy (Laurence Peter). > > * SATYÂT NÂSTI PARO DHARMAH > > [[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 >
Eric
2011-Dec-23 02:56 UTC
[R-es] Como calcular la media de una gran cantidad de flow.frame en un ciclo "for" ...
Hola, habia encontrado lo que me señalas y lo cambie sin resultados positivos, me aparece el mismo error ... si alguien tiene alguna otra idea para probar estare agradecido :) ... Saludos, eric. pd. cdo uno selecciona "contestar a todos" se abre otro hilo o es la forma correcta de contestar?? 2011/12/22 Carlos J. Gil Bellosta <cgb@datanalytics.com>> Hola, ¿qué tal? > > No conozco los detalles del objeto al que te refieres, pero creo que > la expresión adecuada no es > > exprs(lista[i][,5])) > > sino > > exprs( lista[[i]] )[,5] > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 22 de diciembre de 2011 17:57, Eric <ericconchamunoz@gmail.com> > escribió: > > Queridos amigos tengo el siguiente problema: > > > > Tengo alrededor de 100 archivos del tipo flowFrame (datos de citometria) > > que he importado a R. Estos archivos tienen 6 columnas y 10.000 (diez > mil) > > filas. Tengo que calcular el promedio de la quinta columna y graficarlo > > contra el promedio de la segunda columna. La segunda columna tiene el > mismo > > valor para las 10.000 filas en cada archivo asi es que sabemos el > promedio > > de antemano, pero quiero incluirlo en el calculo de todos modos. Para > > calcular las medias he creado el siguiente nano-algoritmo que incluye un > > ciclo "for" : > > > > lista <- ls(pattern="dat12") # para usar solo los archivos que son del > > mes 12 que son alrededor de 100 > > medias <- c(1:length(lista)) > > for (i in length(lista)){ > > medias[i] <- mean(exprs(lista[i][,5])) > > } > > > > pero obtengo el siguiente error: > > > > Error in exprs(lista[i][, 5]) : > > error in evaluating the argument ''object'' in selecting a method for > > function ''exprs'': Error in lista[i][, 5] : incorrect number of dimensions > > > > parece que usar *lista[i][,5]* como argumento de la funcion exprs es un > > error , porque lista[i] no se comporta como un nombre de archivo como yo > > crei que haria y esto es lo que no se como hacer, es decir, como se hace > > para poder utilizar los nombres contenidos en el vector "lista" y > construir > > el argumento de la funcion "exprs" correctamente ... o como se puede > hacer > > de otro modo esto mismo?? > > > > me explico bien ?? > > > > entre parentesis es la primera vez que trato de hacer un ciclo en R y > quiza > > hasta eso este mal ... > > > > Saludos y muchas gracias por su ayuda, > > > > Eric. > > > > > > > > > > > > > > > > -- > > Nota: las tildes se han omitido para evitar conflictos con algunos > lectores > > de correo. > > > > * Un economista es un experto que sabrá mañana por qué las cosas que > predijo > > ayer no han sucedido hoy (Laurence Peter). > > > > * SATYÂT NÂSTI PARO DHARMAH > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > >-- Nota: las tildes se han omitido para evitar conflictos con algunos lectores de correo. * Un economista es un experto que sabrá mañana por qué las cosas que predijo ayer no han sucedido hoy (Laurence Peter). * SATYÂT NÂSTI PARO DHARMAH [[alternative HTML version deleted]]
Carlos Ortega
2011-Dec-23 09:19 UTC
[R-es] Como calcular la media de una gran cantidad de flow.frame en un ciclo "for" ...
Hola, Disculpa, tengo alguna duda de cómo llegas al código que propones. Parece como si ya tuvieras en memoria los 100 ficheros (objetos)... y por otro lado no sé qué es la función "exprs()". Dand un paso para atrás, para estar en el mismo contexto, mira si este pseudo-código de cómo tratar el problema es válido para tu problema: *conseguir listado de ficheros con un patrón determinado de nombre para cada fichero conseguir la media de la segunda columna med.seg conseguir la media de la sexta columna incluir la media de la 6 columna como un nuevo elemento de un vector v.med* *crear un data.frame con el vector v.med y med.seg* Saludos, Carlos Ortega www.qualityexcellence.es El 23 de diciembre de 2011 03:56, Eric <ericconchamunoz@gmail.com> escribió:> Hola, habia encontrado lo que me señalas y lo cambie sin resultados > positivos, me aparece el mismo error ... si alguien tiene alguna otra idea > para probar estare agradecido :) ... > > Saludos, eric. > > pd. cdo uno selecciona "contestar a todos" se abre otro hilo o es la forma > correcta de contestar?? > > > > > 2011/12/22 Carlos J. Gil Bellosta <cgb@datanalytics.com> > > > Hola, ¿qué tal? > > > > No conozco los detalles del objeto al que te refieres, pero creo que > > la expresión adecuada no es > > > > exprs(lista[i][,5])) > > > > sino > > > > exprs( lista[[i]] )[,5] > > > > Un saludo, > > > > Carlos J. Gil Bellosta > > http://www.datanalytics.com > > > > El día 22 de diciembre de 2011 17:57, Eric <ericconchamunoz@gmail.com> > > escribió: > > > Queridos amigos tengo el siguiente problema: > > > > > > Tengo alrededor de 100 archivos del tipo flowFrame (datos de > citometria) > > > que he importado a R. Estos archivos tienen 6 columnas y 10.000 (diez > > mil) > > > filas. Tengo que calcular el promedio de la quinta columna y graficarlo > > > contra el promedio de la segunda columna. La segunda columna tiene el > > mismo > > > valor para las 10.000 filas en cada archivo asi es que sabemos el > > promedio > > > de antemano, pero quiero incluirlo en el calculo de todos modos. Para > > > calcular las medias he creado el siguiente nano-algoritmo que incluye > un > > > ciclo "for" : > > > > > > lista <- ls(pattern="dat12") # para usar solo los archivos que son > del > > > mes 12 que son alrededor de 100 > > > medias <- c(1:length(lista)) > > > for (i in length(lista)){ > > > medias[i] <- mean(exprs(lista[i][,5])) > > > } > > > > > > pero obtengo el siguiente error: > > > > > > Error in exprs(lista[i][, 5]) : > > > error in evaluating the argument ''object'' in selecting a method for > > > function ''exprs'': Error in lista[i][, 5] : incorrect number of > dimensions > > > > > > parece que usar *lista[i][,5]* como argumento de la funcion exprs es un > > > error , porque lista[i] no se comporta como un nombre de archivo como > yo > > > crei que haria y esto es lo que no se como hacer, es decir, como se > hace > > > para poder utilizar los nombres contenidos en el vector "lista" y > > construir > > > el argumento de la funcion "exprs" correctamente ... o como se puede > > hacer > > > de otro modo esto mismo?? > > > > > > me explico bien ?? > > > > > > entre parentesis es la primera vez que trato de hacer un ciclo en R y > > quiza > > > hasta eso este mal ... > > > > > > Saludos y muchas gracias por su ayuda, > > > > > > Eric. > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Nota: las tildes se han omitido para evitar conflictos con algunos > > lectores > > > de correo. > > > > > > * Un economista es un experto que sabrá mañana por qué las cosas que > > predijo > > > ayer no han sucedido hoy (Laurence Peter). > > > > > > * SATYÂT NÂSTI PARO DHARMAH > > > > > > [[alternative HTML version deleted]] > > > > > > > > > _______________________________________________ > > > R-help-es mailing list > > > R-help-es@r-project.org > > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > > > > -- > Nota: las tildes se han omitido para evitar conflictos con algunos lectores > de correo. > > * Un economista es un experto que sabrá mañana por qué las cosas que > predijo > ayer no han sucedido hoy (Laurence Peter). > > * SATYÂT NÂSTI PARO DHARMAH > > [[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]]
Oscar Perpiñan Lamigueiro
2011-Dec-23 10:50 UTC
[R-es] Como calcular la media de una gran cantidad de flow.frame en un ciclo "for" ...
Hola Eric, Dado que los flowFrame son clases definidas en el paquete de Bioconductor flowCore, es probable que obtengas ayuda más fácilmente si escribes a la lista de correo de Bioconductor: http://www.bioconductor.org/help/mailing-list/#bioconductor. Saludos. Oscar. El Thu, 22 Dec 2011 13:57:04 -0300 Eric <ericconchamunoz en gmail.com> escribió:> Queridos amigos tengo el siguiente problema: > > Tengo alrededor de 100 archivos del tipo flowFrame (datos de > citometria) que he importado a R. Estos archivos tienen 6 columnas y > 10.000 (diez mil) filas. Tengo que calcular el promedio de la quinta > columna y graficarlo contra el promedio de la segunda columna. La > segunda columna tiene el mismo valor para las 10.000 filas en cada > archivo asi es que sabemos el promedio de antemano, pero quiero > incluirlo en el calculo de todos modos. Para calcular las medias he > creado el siguiente nano-algoritmo que incluye un ciclo "for" : > > lista <- ls(pattern="dat12") # para usar solo los archivos que son > del mes 12 que son alrededor de 100 > medias <- c(1:length(lista)) > for (i in length(lista)){ > medias[i] <- mean(exprs(lista[i][,5])) > } > > pero obtengo el siguiente error: > > Error in exprs(lista[i][, 5]) : > error in evaluating the argument 'object' in selecting a method for > function 'exprs': Error in lista[i][, 5] : incorrect number of > dimensions > > parece que usar *lista[i][,5]* como argumento de la funcion exprs es > un error , porque lista[i] no se comporta como un nombre de archivo > como yo crei que haria y esto es lo que no se como hacer, es decir, > como se hace para poder utilizar los nombres contenidos en el vector > "lista" y construir el argumento de la funcion "exprs" > correctamente ... o como se puede hacer de otro modo esto mismo?? > > me explico bien ?? > > entre parentesis es la primera vez que trato de hacer un ciclo en R y > quiza hasta eso este mal ... > > Saludos y muchas gracias por su ayuda, > > Eric. > > > > > > >
Eric
2011-Dec-23 18:26 UTC
[R-es] Como calcular la media de una gran cantidad de flow.frame en un ciclo "for" ...
Hola Carlos ... soy nuevo en el uso de R (comence hace un par de meses) y aun estoy comprendiendo la logica de trabajo del programa ... voy a explicar lo del codigo pero antes un par e aclaraciones: 1. Tengo muchos archivos que provienen de las lecturas de muestras en un citometro, todos comienzan con el prefijo "dat" y el dia en que se hizo la lectura que fue el 12, es decir, con "dat12", por eso el filtro en el comando ls(pattern="dat12"). 2. Los archivos .FCS (de FlowCytometry) son del tipo flowFrame, el que permite guardar los datos leidos por el citometro (estos van en una matriz) y ademas permite guardar una especie de metadatos que caracterizan la informacion, la descripcion completa aparece en ?flowFrame. Asi es que para poder usar los datos de la matriz contenida en el flowFrame hay que usar la funcions exprs() que la extrae ... entonces, para calcular una sola media por ahora (luego agregamos la otra): 1 crear un vector llamado "lista" que contendra la lista de archivos que se van a usar 2. crear el vector que contendra las medias, este posee tantas filas como numero de archivos a usar (dado por el largo de "lista") 3. calcular la media de la columna de interes en el archivo de interes 4. asignar esta media a una fila del archivo creado en el punto 2 5. repetir los pasos 3 y 4 para todos los archivos de la "lista". El seudo codigo que me indicas es mas o menos lo mismo que trate de hacer ... el problema es como construir correctamente el nombre de cada archivo para acceder correctamente a la columna de interes dentro del flowFrame, eso es lo que falla creo ... Saludos y gracias, eric. 2011/12/23 Carlos Ortega <cof@qualityexcellence.es>> Hola, > > Disculpa, tengo alguna duda de cómo llegas al código que propones. > Parece como si ya tuvieras en memoria los 100 ficheros (objetos)... y por > otro lado no sé qué es la función "exprs()". > > Dand un paso para atrás, para estar en el mismo contexto, mira si este > pseudo-código de cómo tratar el problema es válido para tu problema: > > *conseguir listado de ficheros con un patrón determinado de nombre > para cada fichero > conseguir la media de la segunda columna med.seg > conseguir la media de la sexta columna > incluir la media de la 6 columna como un nuevo elemento de un vector > v.med* > *crear un data.frame con el vector v.med y med.seg* > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 23 de diciembre de 2011 03:56, Eric <ericconchamunoz@gmail.com>escribió: > > Hola, habia encontrado lo que me señalas y lo cambie sin resultados >> positivos, me aparece el mismo error ... si alguien tiene alguna otra idea >> para probar estare agradecido :) ... >> >> Saludos, eric. >> >> pd. cdo uno selecciona "contestar a todos" se abre otro hilo o es la forma >> correcta de contestar?? >> >> >> >> >> 2011/12/22 Carlos J. Gil Bellosta <cgb@datanalytics.com> >> >> > Hola, ¿qué tal? >> > >> > No conozco los detalles del objeto al que te refieres, pero creo que >> > la expresión adecuada no es >> > >> > exprs(lista[i][,5])) >> > >> > sino >> > >> > exprs( lista[[i]] )[,5] >> > >> > Un saludo, >> > >> > Carlos J. Gil Bellosta >> > http://www.datanalytics.com >> > >> > El día 22 de diciembre de 2011 17:57, Eric <ericconchamunoz@gmail.com> >> > escribió: >> > > Queridos amigos tengo el siguiente problema: >> > > >> > > Tengo alrededor de 100 archivos del tipo flowFrame (datos de >> citometria) >> > > que he importado a R. Estos archivos tienen 6 columnas y 10.000 (diez >> > mil) >> > > filas. Tengo que calcular el promedio de la quinta columna y >> graficarlo >> > > contra el promedio de la segunda columna. La segunda columna tiene el >> > mismo >> > > valor para las 10.000 filas en cada archivo asi es que sabemos el >> > promedio >> > > de antemano, pero quiero incluirlo en el calculo de todos modos. Para >> > > calcular las medias he creado el siguiente nano-algoritmo que incluye >> un >> > > ciclo "for" : >> > > >> > > lista <- ls(pattern="dat12") # para usar solo los archivos que son >> del >> > > mes 12 que son alrededor de 100 >> > > medias <- c(1:length(lista)) >> > > for (i in length(lista)){ >> > > medias[i] <- mean(exprs(lista[i][,5])) >> > > } >> > > >> > > pero obtengo el siguiente error: >> > > >> > > Error in exprs(lista[i][, 5]) : >> > > error in evaluating the argument ''object'' in selecting a method for >> > > function ''exprs'': Error in lista[i][, 5] : incorrect number of >> dimensions >> > > >> > > parece que usar *lista[i][,5]* como argumento de la funcion exprs es >> un >> > > error , porque lista[i] no se comporta como un nombre de archivo como >> yo >> > > crei que haria y esto es lo que no se como hacer, es decir, como se >> hace >> > > para poder utilizar los nombres contenidos en el vector "lista" y >> > construir >> > > el argumento de la funcion "exprs" correctamente ... o como se puede >> > hacer >> > > de otro modo esto mismo?? >> > > >> > > me explico bien ?? >> > > >> > > entre parentesis es la primera vez que trato de hacer un ciclo en R y >> > quiza >> > > hasta eso este mal ... >> > > >> > > Saludos y muchas gracias por su ayuda, >> > > >> > > Eric. >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > -- >> > > Nota: las tildes se han omitido para evitar conflictos con algunos >> > lectores >> > > de correo. >> > > >> > > * Un economista es un experto que sabrá mañana por qué las cosas que >> > predijo >> > > ayer no han sucedido hoy (Laurence Peter). >> > > >> > > * SATYÂT NÂSTI PARO DHARMAH >> > > >> > > [[alternative HTML version deleted]] >> > > >> > > >> > > _______________________________________________ >> > > R-help-es mailing list >> > > R-help-es@r-project.org >> > > https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > >> > >> >> >> >> -- >> Nota: las tildes se han omitido para evitar conflictos con algunos >> lectores >> de correo. >> >> * Un economista es un experto que sabrá mañana por qué las cosas que >> predijo >> ayer no han sucedido hoy (Laurence Peter). >> >> * SATYÂT NÂSTI PARO DHARMAH >> >> [[alternative HTML version deleted]] >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >-- Nota: las tildes se han omitido para evitar conflictos con algunos lectores de correo. * Un economista es un experto que sabrá mañana por qué las cosas que predijo ayer no han sucedido hoy (Laurence Peter). * SATYÂT NÂSTI PARO DHARMAH [[alternative HTML version deleted]]