J'utilise R pour une analyse de données. Spécifications du système: RAM I5 + 4GB. Pour une raison quelconque, ma session R est beaucoup plus grande que mes données qui me laisse très peu d'espace pour d'autres opérations. P>
J'ai lu un fichier Edits:
Le fichier comporte 123 colonnes et 1190387 rangées. Les variables sont de type num code> et int code>. p>
4 Réponses :
r utilise plus de mémoire probablement en raison de la copie d'objets. Bien que ces copies temporaires soient supprimées, r occupe toujours l'espace. Pour remettre cette mémoire au système d'exploitation, vous pouvez appeler la fonction En outre, il n'est pas évident qu'une carte de 550 Mo de fichier CSV à 550 Mo dans R. Cela dépend des types de données des colonnes (flotteur, int, caractère), qui utilisent toutes des quantités différentes de mémoire. P >
Le fait que votre fichier rdata est plus petit n'est pas étrange que R compresse les données, voir la documentation de gc code>. Cependant, lorsque la mémoire est nécessaire, gc code> est appelé automatiquement. p>
Enregistrer code>. p>
Je suppose que la seule façon de sauvegarder la mémoire consiste à stocker les données dans une base de données SQLite et n'appelle que quelques colonnes à la fois. gc code> n'a pas vraiment aidé. C'est ce que j'ai eu quand j'ai utilisé la fonction de fonction - (verbose = getOption ("verbose"), réinitialiser = false = false) {res <- .Internal (gc (verbose, réinitialisation)) Res <- MATRIX (RES, 2L, 7L, DimNames = liste (C ("NCells", "vCells"), C ("utilisé", "(MB)", "Trigger GC", "(MB)", "Limite", " Max utilisé "," (MB) ")))) Si (Tout (is.na (res [ 5l]))) res [ -5l] sinon res}
Essayez d'utiliser gc () code>, pas gc code>. Taper une fonction sans les parenthèses conduit à R montrant le code source R d'une fonction.
Une valeur numérique (point flottant à double précision) est stocké dans 8 octets de RAM.
Une valeur entière (dans ce cas) utilise 4 octets.
Vos données ont 1 0,190 387 * 123 = 146,417 601.
Si toutes les colonnes sont numériques, 1 171 340 808 octets de RAM utilisées (~ 1,09 Go).
Si tous sont entier, 585 670 404 octets sont nécessaires (~ 558 Mo). p>
Il est donc parfaitement logique que vos données utilisent 780 Mo de RAM. p>
(chevauchement certains avec les commentaires précédents) P>
Vous pouvez utiliser Read_CSV ou Read_Table à partir du package Readr, ce qui permet de charger des données plus rapidement. P>
Utilisez gc () et mem_change () pour vérifier la modification de la mémoire et identifier quelle étape conduit à l'augmentation de la mémoire. p>
Vous pouvez certainement construire une connexion et lire des données par des morceaux. p>
ou créer une base de données, puis utilisez RPOSTGRESQL; Rsqlite; Rmysql. Vérifiez dbConnect, dbwritettable, dbgequery. p>
Il est difficile de dire plus sans exemple de reproduction. P>
Je suppose que vous utilisez Le problème avec ces fonctions est qu'ils fragmentent la mémoire horriblement. Et puisque le collecteur de poubelles R ne peut pas déplacer de l'espace alloué à la mémoire libre des parties fragmentées (un court-circuit du collecteur de poubages R), vous êtes bloqué avec la solution que vous choisissez: p>
Sans exemple reproductible, il est difficile de commenter cette
Cela vous aiderait si vous nous diriez combien de lignes et de colonnes que vous avez, et quelle classe (caractère, numérique, entier, facteur?) Chaque colonne est. Ajouter peut-être les résultats de
str (my_data_frame) code> à votre question. Voici une supposion sauvage: essayez d'ajouterstringsasfactors = false code> à votreread.table () code> appel.@BDemarest Le fichier comporte 123 colonnes et 1190387 rangées. Les variables sont de type NUM et INT. J'ai ajouté
stringsasfactors = false code> à monlis.csv () code> appeler mais il n'a pas fait la différence dans l'utilisation de la mémoire.Je dois crucialement, vous devez nous dire: votre Version RStudio B>, votre R Version B> et votre Version OS B> (MacOS? 10.6 / .7 / .8 /.8.5/.9 ...?) En outre, essayez de mettre à niveau sur les versions actuelles R et ensuite RStudio, puis dites-nous les numéros de mémoire que vous voyez à la fois pour Standalone R et RStudio.
Si ce problème est résolu par les dernières versions R et RStudio, puis fermez-la (avec une note sur laquelle les versions).