J'ai un data.table
ce n'est pas très gros (2 Go) mais pour une raison quelconque write.csv
prend beaucoup de temps pour l'écrire (je n'ai jamais fini d'attendre) et semble utiliser une tonne de RAM pour le faire).
J'ai essayé de convertir le data.table
à un data.frame
même si cela ne devrait vraiment rien faire puisque data.table
étend data.frame
. quelqu'un a-t-il rencontré cela?
Plus important encore, si vous l'arrêtez avec Ctrl-C, R ne semble pas rendre de mémoire.
MISE À JOUR 2019.01.07 :
fwrite
est sur CRAN depuis le 2016-11-25.
install.packages("data.table")
MISE À JOUR 08.04.2016 :
fwrite
a été récemment ajouté à la version de développement du package data.table. Il fonctionne également en parallèle (implicitement).
# Install development version of data.table
install.packages("data.table",
repos = "https://Rdatatable.github.io/data.table", type = "source")
# Load package
library(data.table)
# Load data
data(USArrests)
# Write CSV
fwrite(USArrests, "USArrests_fwrite.csv")
Selon les tests de référence détaillés indiqués sous accélération des performances de write.table , fwrite
est ~ 17x plus rapide que write.csv
là (YMMV).
MISE À JOUR 15.12.2015 :
À l'avenir, il pourrait y avoir une fonction fwrite
dans le data.table
package, voir: https://github.com/Rdatatable/data.table/issues/58 . Dans ce fil, un Gist est lié, qui fournit un prototype pour une telle fonction accélérant le processus d'un facteur 2 (selon l'auteur, https://Gist.github.com/oseiskar/15c4a3fd9b6ec5856c89 =).
RÉPONSE ORIGINALE :
J'ai eu les mêmes problèmes (en essayant d'écrire des fichiers CSV encore plus gros) et j'ai finalement décidé de ne pas utiliser de fichiers CSV.
Je vous recommande d'utiliser SQLite car il est beaucoup plus rapide que de traiter des fichiers CSV:
require("RSQLite")
# Set up database
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = "test.db")
# Load example data
data(USArrests)
# Write data "USArrests" in table "USArrests" in database "test.db"
dbWriteTable(con, "arrests", USArrests)
# Test if the data was correctly stored in the database, i.e.
# run an exemplary query on the newly created database
dbGetQuery(con, "SELECT * FROM arrests WHERE Murder > 10")
# row_names Murder Assault UrbanPop Rape
# 1 Alabama 13.2 236 58 21.2
# 2 Florida 15.4 335 80 31.9
# 3 Georgia 17.4 211 60 25.8
# 4 Illinois 10.4 249 83 24.0
# 5 Louisiana 15.4 249 66 22.2
# 6 Maryland 11.3 300 67 27.8
# 7 Michigan 12.1 255 74 35.1
# 8 Mississippi 16.1 259 44 17.1
# 9 Nevada 12.2 252 81 46.0
# 10 New Mexico 11.4 285 70 32.1
# 11 New York 11.1 254 86 26.1
# 12 North Carolina 13.0 337 45 16.1
# 13 South Carolina 14.4 279 48 22.5
# 14 Tennessee 13.2 188 59 26.9
# 15 Texas 12.7 201 80 25.5
# Close the connection to the database
dbDisconnect(con)
Pour plus d'informations, voir http://cran.r-project.org/web/packages/RSQLite/RSQLite.pdf
Vous pouvez également utiliser un logiciel comme http://sqliteadmin.orbmu2k.de/ pour accéder à la base de données et exporter la base de données vers CSV, etc.
-