Estoy usando R para ejecutar simulaciones usando datos de series temporales. He estado usando matrices para almacenar datos, pero necesito una solución que requiera menos memoria para almacenar datos en pasos intermedios a fin de documentar el proceso. No soy programador, así que estoy buscando algo relativamente fácil de configurar en múltiples plataformas si es posible (Windows, Mac, Linux). También necesito poder llamar directamente a la base de datos desde R, ya que ahora no es posible aprender otro idioma. Idealmente, me gustaría poder leer y escribir con frecuencia en la base de datos de una manera similar a una matriz, aunque no sé si eso es realista. Con mucho gusto sacrificaré la velocidad para facilitar el uso, pero estoy dispuesto a trabajar para aprender soluciones de código abierto. Cualquier sugerencia sera apreciada.Recomendaciones para la base de datos con R
Respuesta
que también tienen que ser capaces de directamente llamada de la base de datos de R
Sugiero la creación de MySQL con interfaz RMySQL.
Una vez que la conexión de base de datos está abierta, se puede consultar la base de datos y obtener los datos en R, ejemplo:
# Run an SQL statement by creating first a resultSet object
rs <- dbSendQuery(con, statement = paste(
"SELECT w.laser_id, w.wavelength, p.cut_off",
"FROM WL w, PURGE P",
"WHERE w.laser_id = p.laser_id",
"SORT BY w.laser_id")
# we now fetch records from the resultSet into a data.frame
data <- fetch(rs, n = -1) # extract all rows
RMySQL: R interfaz a la base de datos MySQL
Base de Datos interfaz y controlador MySQL para R. Esta versión cumple con la definición de interfaz de base de datos como implementada en el paquete DBI 0.2-2.
base de datos MySQL:
disponible para todas las plataformas que citadas en la pregunta, y más, descargar here.
comentarios rápidos:
- R es bueno en esto, como lengua para la programación con los datos, hay un montón de interfaces
- Hay toda una manual dedicada a la importación/exportación de datos, y tiene un section on relational databases, así que comienza allí.
- R tiene el paquete ampliamente usado DBI que proporciona una interfaz unificada para muchos backends, entre ellos SQLite, MySQL, PostgreSQL, Oracle, ... Use eso, tal vez con RSQLite para que algo funcione rápidamente. Todavía puedes cambiar de backends después. También hay RODBC, pero encuentro que ODBC es tedioso para trabajar
- R también tiene una variante especializada en el paquete TSdbi de Paul Gilbert, que trae la abstracción de DBI a las bases de datos de timeseries. También es compatible con múltiples backends.
- El paquete data.table se escribió para esto y es muy rápido en la indexación y la agregación.
Gracias por los recursos. Hasta ahora, SQLite parece ser el más apropiado para mi nivel de habilidad. – ProbablePattern
Hmm, parece que DBI murió en 2009. ¿Algo más nuevo? –
@SteveBennett: No, [DBI] (http://cran.r-project.org/web/packages/DBI/index.html) está activo y actualizado, pero _no se ha corregido desde 2009_, lo cual es diferente. Y DBI es solo una interfaz cuando escribí. –
¿Realmente necesita una solución de base de datos para su propósito? Usted dice que quiere una "solución para almacenar datos en pasos intermedios". ¿Qué tal si guarda la matriz de datos en el disco en los puntos de tiempo requeridos?
Editar: para que sea posible recuperar la información, puede incrustar metainformación, p. Ej. índice de prueba y/o marca de tiempo, en el nombre del archivo. Luego, más tarde, puede ubicar y cargar el archivo con el nombre de archivo correcto.
Soy relativamente nuevo en R pero parece que esto generaría varios cientos de archivos y dificultaría la auditoría cuando terminé. Cada ejecución de la simulación requiere la creación de algunas matrices tridimensionales y solo puedo ejecutar unas 5.000 simulaciones a la vez. Mi objetivo actual es hacer 50,000 carreras. Si hay una mejor manera de almacenar matrices tridimensionales en el disco y leer sus resultados más tarde de una manera sistemática, ciertamente apreciaría la guía. – ProbablePattern
También puede consultar el paquete ff.
- 1. Recomendaciones para el acceso a la base de datos C#
- 2. Recomendaciones para la depuración "dinámica/interactiva" de funciones en R?
- 3. Recomendaciones para una base de datos en memoria frente a estructuras de datos seguras para hilos
- 4. Recomendaciones para el editor de texto de Windows para R
- 5. Recomendaciones para las bases de datos de las columnas de base de datos orientada a
- 6. ¿Recomendaciones con datos jerárquicos en bases de datos no relacionales?
- 7. Recomendaciones para datos persistentes en Android?
- 8. ¿Recomendaciones para comenzar con WiX?
- 9. Recomendaciones de búsqueda Recomendaciones
- 10. Recomendaciones para la biblioteca de compresión .NET
- 11. Recomendaciones para aprender Perl?
- 12. Almacenamiento de objetos R en una base de datos relacional
- 13. Recomendaciones para un dispositivo de serie económico
- 14. Leyenda con diferentes tamaños de símbolo en la base R
- 15. Recomendaciones para Java + OpenPGP?
- 16. problema con conseguir los datos de la base de datos
- 17. Cifrado de datos para almacenamiento en la base de datos
- 18. base de datos de CTAG para Go
- 19. recopilación de datos para estadísticas: de la web a una base de datos
- 20. ¿Proporcionar datos base para la aplicación de datos básicos?
- 21. Uso de BigQuery con R para analizar datos
- 22. Haskell DB recomendaciones?
- 23. LINQ Consulta para insertar datos en la base de datos
- 24. Recomendaciones para desarrollar documentos Sweave
- 25. Esquema de la base de datos para almacenar datos SNMP
- 26. Necesita recomendaciones para el tutorial de Websphere
- 27. Recomendaciones para un tutorial de "Primeros pasos con Greasemonkey"
- 28. Recomendaciones para puertas de enlace SMS con soporte API
- 29. Conectarse a la base de datos MySQL con RMySQL
- 30. Copia de datos relacionales de la base de datos a la base de datos
Para un usuario único, RSQLite es más fácil de instalar y bastante rápido. –
Gracias por los ejemplos de código Bakkal. Esto se usará para un solo usuario. ¿Hay alguna ventaja al usar MySQL en lugar de SQLite para esta aplicación? – ProbablePattern
Puede usar la base de datos más simple para la tarea actual, y luego pasar a una más completa más adelante si falta una característica útil :) – bakkal