ver tabla recortar que presentacion mapas mapa herramientas definicion data contenido barra arcmap r performance dataframe rcpp

tabla - Límites prácticos del marco de datos R



tabla contenido arcgis (5)

1) El manual de R Import / Export debería ser el primer puerto de escala para preguntas sobre la importación de datos: hay muchas opciones y lo que funcionará para usted podría ser muy específico.

http://cran.r-project.org/doc/manuals/R-data.html

read.table específicamente ha mejorado enormemente el rendimiento si se utilizan las opciones que se le proporcionan, en particular colClasses , comment.char y nrows : esto se debe a que esta información debe inferirse de los datos en sí, lo que puede ser costoso.

2) Hay un límite específico para la longitud (número total de elementos) para cualquier vector, matriz, matriz, columna en un data.frame o lista. Esto se debe a un índice de 32 bits utilizado bajo el capó, y es cierto para 32 bits y 64 bits R. El número es 2 ^ 31 - 1. Este es el número máximo de filas para un data.frame, pero es tan grande que es mucho más probable que se quede sin memoria incluso para vectores individuales antes de comenzar a recopilar varios de ellos.

Ver help(Memory-limits) y help(Memory) para más detalles.

Un solo vector de esa longitud tomará muchos gigabytes de memoria (depende del tipo y el modo de almacenamiento de cada vector, 17.1 para el numérico) por lo que es poco probable que sea un límite adecuado a menos que realmente esté presionando cosas. Si realmente necesita pasar las cosas por la memoria disponible del sistema (aquí es obligatorio 64 bits), vale la pena considerar las técnicas de base de datos estándar descritas en el manual de importación / exportación o las opciones de archivo asignadas en memoria (como el paquete ff ). La Computación de alto rendimiento CRAN Task View High Performance es un buen recurso para este fin de cosas.

Finalmente, si tiene pilas de RAM (16 GB o más) y necesita una indexación de 64 bits, podría aparecer en una versión futura de R. http://www.mail-archive.com/[email protected]/msg92035.html

Además, Ross Ihaka analiza algunas de las decisiones históricas y las direcciones futuras para un lenguaje similar a R en documentos y charlas aquí: http://www.stat.auckland.ac.nz/~ihaka/?Papers_and_Talks

He estado leyendo acerca de cómo read.table no es eficiente para archivos de datos grandes. También cómo R no es adecuado para grandes conjuntos de datos. Así que me preguntaba dónde puedo encontrar cuáles son los límites prácticos y las tablas de rendimiento para (1) Leer datos de varios tamaños (2) trabajando con datos de distintos tamaños.

En efecto, quiero saber cuándo se deteriora el rendimiento y cuándo toco un obstáculo. También cualquier comparación contra C ++ / MATLAB u otros lenguajes sería realmente útil. finalmente, si hay alguna comparación de rendimiento especial para Rcpp y RInside, ¡sería genial!


Al leer grandes archivos csv x GB <=> y.1e6 rows creo que data.table::fread (a partir de la versión 1.8.7) es la alternativa más rápida que puede obtener haciendo install.packages("data.table", repos="http://R-Forge.R-project.org")

Por lo general, gana un factor de 5 a 10 (y todos los row.names , row.names , etc. son tratados por la función en sí). Si tiene muchos archivos y una computadora lo suficientemente decente (varios núcleos), le recomiendo usar el paquete parallel (como parte de R.2.14) para cargar un archivo por núcleo.

La última vez que hice esto entre la carga monotreaded con read.csv y multiproceso en 4 núcleos uso de fread pasé de 5 minutos a 20 segundos


R es adecuado para grandes conjuntos de datos, pero es posible que tenga que cambiar su forma de trabajar de alguna manera a partir de lo que le enseñan los libros de texto introductorios. Hice una publicación en Big Data for R que procesa un conjunto de datos de 30 GB y que puede encontrarle útil como fuente de inspiración.

Las fuentes habituales de información para comenzar son la vista de tareas de computación de alto rendimiento y la lista de correo R-SIG HPC en R-SIG HPC .

El límite principal que tiene que trabajar es un límite histórico en la longitud de un vector a 2 ^ 31-1 elementos que no sería tan malo si R no almacenara matrices como vectores. (El límite es la compatibilidad con algunas bibliotecas BLAS).

Analizamos regularmente los registros de datos de llamadas de telecomunicaciones y las bases de datos de marketing con millones de clientes que utilizan R, por lo que nos complacería hablar más si está interesado.


Solo puedo responder el de read.table , ya que no tengo ninguna experiencia con grandes conjuntos de datos. read.table funciona mal si no proporciona argumentos colClasses . Sin él, read.table predeterminado en NA e intenta adivinar una clase de cada columna, y eso puede ser lento, especialmente cuando tienes muchas columnas.


Los límites físicos surgen del uso de índices de 32 bits en vectores. Como resultado, se permiten vectores de hasta 2 ^ 31 - 1. Las matrices son vectores con dimensiones, por lo que el producto de nrow(mat) y ncol(mat) debe estar dentro de 2 ^ 31 - 1. Los marcos de datos y las listas son vectores generales, por lo que cada componente puede tomar 2 ^ 31 - 1 entradas, que para marcos de datos significa que puede tener tantas filas y columnas. Para las listas, puede tener 2 ^ 31 - 1 componentes, cada uno de 2 ^ 31 - 1 elementos. Esto se extrae de una posting reciente de Duncan Murdoch en respuesta a una Q en R-Ayuda

Ahora que todo tiene que caber en la RAM con R estándar, por lo que podría ser un límite más apremiante, pero la vista de tareas de computación de alto rendimiento que otros han mencionado contiene detalles de paquetes que pueden eludir los problemas en memoria.