Una pregunta, en el congreso hablasteis de módulos o programas para aumentar la velocidad de lectura y compilación de los datos. He oído hablar de algunos que hacen los bucles en C y los llaman desde R. Sabéis como funciona o si hay algo mejor. Gracias \|||/ (o o) +-----------------------oOOo-(_)-oOOo------------------------------+ | José Miguel Contreras García | | e-mail: jmcontreras en ugr.es | | | +----------------------oooO-------Oooo-----------------------------+
Hola, ¿qué tal? Si lo que te interesa es velocidad bruta (a costa de mayor trabajo manual): 1) Lee la documentación de read.table: da algunas pistas sobre cómo utilizar algunas opciones para acelerar la lectura, como por ejemplo no utilizar caracteres de comentario (almohadilla por defecto), utilizar la opción colclasses, etc. 2) Cargar los datos en una base de datos e importarlos desde R. Dicen que la carga es más rápida, pero nunca he podido contrastarlo personalmente. En cualquier caso, el uso de una base de datos ofrece ventajas que trascienden los de una potencial lectura rápida de los datos. 3) Puede ser que la lectura sea lenta porque el tamaño de los datos es tan grande que la máquina comience a paginar. Entonces ya no se trata de un problema de velocidad bruta sino de gestión inteligente de la memoria. De nuevo, usar una base de datos puede ser la solución. De manera alternativa, puedes convertirte en otro "beta-tester" de mi paquete colbycol, que lee los datos columna a columna (aunque a costa de cierta eficiencia de en la lectura). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 20 de febrero de 2010 20:20, José Miguel Contreras García <jmcontreras en ugr.es> escribió:> > > Una pregunta, en el congreso hablasteis de módulos o programas para > aumentar la velocidad de lectura y compilación de los datos. > > He oído hablar de algunos que hacen los bucles en C y los llaman desde R. > Sabéis como funciona o si hay algo mejor. > > Gracias > > > > \|||/ > (o o) > +-----------------------oOOo-(_)-oOOo------------------------------+ > | José Miguel Contreras García | > > | e-mail: jmcontreras en ugr.es | > | | > +----------------------oooO-------Oooo-----------------------------+ > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Hola, En esta página hay mucha información sobre cómo conectar R con C o fortran, creando un fichero "dll" (en windows) o "so" (en linux): http://www.math.ncu.edu.tw/~chenwc/R_note/ En concreto, esta parte de la web trata el asunto de los "fast loops": http://www.math.ncu.edu.tw/~chenwc/R_note/index.php?item=loop Un saludo> Una pregunta, en el congreso hablasteis de módulos o programas para > aumentar la velocidad de lectura y compilación de los datos. > > He oído hablar de algunos que hacen los bucles en C y los llaman desde R. > Sabéis como funciona o si hay algo mejor. > > Gracias > > > > \|||/ > (o o) > +-----------------------oOOo-(_)-oOOo------------------------------+ > | José Miguel Contreras García | > > | e-mail: jmcontreras en ugr.es | > | | > +----------------------oooO-------Oooo-----------------------------+ > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >jm~ _______________________________ J. Miguel Marin http://www.est.uc3m.es/jmmarin Dep. of Statistics University Carlos III of Madrid Spain (E.U.)
Buenos dias Jose, Quizas en http://cran.r-project.org/web/views/HighPerformanceComputing.htmlpuedes encontrar mas informacion de interes. Claro, la utilizacion de HPC depende, en gran medida, de los procedimienos / analisis en los que estes interesado. Saludos, Jorge Ivan Velez 2010/2/20 José Miguel Contreras García <>> > > Una pregunta, en el congreso hablasteis de módulos o programas para > aumentar la velocidad de lectura y compilación de los datos. > > He oído hablar de algunos que hacen los bucles en C y los llaman desde R. > Sabéis como funciona o si hay algo mejor. > > Gracias > > > > \|||/ > (o o) > +-----------------------oOOo-(_)-oOOo------------------------------+ > | José Miguel Contreras García | > > | e-mail: jmcontreras@ugr.es | > | | > +----------------------oooO-------Oooo-----------------------------+ > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Gracias a todos por las respuestas. Me pongo con los deberes que me habeís puesto
Hola, ¿qué tal? En cualquier caso y por si sirve de algo: hace cosa de siete años creé unas librerías en C para leer datos "deprisa" y pasárselos a R a través de la consabida interfaz. Tuve bastante éxito cuando los datos eran todos numéricos (coma flotante o enteros) pero mucho menos cuando había también columnas con valores de texto. Tengo C bastante olvidado ahora, pero creo que entonces no era tan malo como para no haber programado algo pasable. Se puede ganar velocidad en C a costa de flexibilidad. Y especialmente en la lectura de números. Pero si alguien sabe escribir una librería en C para leer datos que incluyan también texto, sea relativamente flexible y aventaje sustancialmente a read.table en eficiencia, me veré obligado a replantearme lo bueno que pude haber alcanzado a ser con dicho lenguaje. Hoy en día me plantearía sólo el camino de crear código en C para leer eficientemente datos de entrada si tuviese que leer sistemáticamente datos con un un mismo formato (por ejemplo, los generados por un determinado dispositivo). Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com