104 votes

R sur MacOS Erreur : mémoire du vecteur épuisée (limite atteinte ?)

Je suis en train d'essayer d'exécuter un script R (en particulier, j'utilise la fonction "getLineages" du package Bioconductor, Slingshot).

Je me demande pourquoi l'erreur "vector memory exhausted (limit reached?)" apparaît lorsque j'utilise cette fonction, car elle ne semble pas être la fonction la plus gourmande en mémoire par rapport aux autres fonctions de ce package (avec les données que j'analyse).

Je comprends qu'il y a d'autres questions similaires sur Stackoverflow, mais elles suggèrent toutes de passer à la version 64 bits de R. Cependant, j'utilise déjà cette version. Il ne semble pas y avoir d'autres réponses à ce problème pour le moment, je me demandais si quelqu'un pourrait savoir?

Les données ne font que ~120 Mo, ce qui est bien moins que les 8 Go de RAM de mon ordinateur.

Version R 64 bits

2 votes

Il semble que cela pourrait résoudre le problème : r.789695.n4.nabble.com/…

0 votes

Je vais jeter un coup d'œil à cette solution !

2 votes

J'ai rencontré cette erreur sur la version 3.5.1 en essayant d'utiliser "geom_raster" de ggplot2 sur environ 664 points lat/lon. Cette solution ci-dessus n'a pas fonctionné pour moi. Cela semble effectivement être un problème de version comme mentionné dans le fil de discussion.

148voto

Graeme Frost Points 968

Pour ceux qui utilisent Rstudio, j'ai trouvé que définir Sys.setenv('R_MAX_VSIZE'=32000000000), comme cela a été suggéré sur plusieurs messages StackOverflow, ne fonctionne que sur la ligne de commande, et que définir ce paramètre tout en utilisant Rstudio ne prévient pas cette erreur :

Error: vector memory exhausted (limit reached?)

Après avoir lu un peu plus, j'ai trouvé ceci fil, qui clarifie le problème avec Rstudio, et identifie une solution, montrée ci-dessous :

Étape 1 : Ouvrez le terminal,

Étape 2 :

cd ~
touch .Renviron
open .Renviron

Étape 3 : Enregistrez ce qui suit comme première ligne de .Renviron :

R_MAX_VSIZE=100Gb 

Étape 4 : Fermez RStudio et rouvrez-le

Remarque : Cette limite inclut à la fois la mémoire physique et virtuelle ; donc définir _MAX_VSIZE=16Gb sur une machine avec 16Gb de mémoire physique peut ne pas empêcher cette erreur. Vous devrez peut-être jouer avec ce paramètre, en fonction des caractéristiques de votre machine

3 votes

Seule la version .Renviron a fonctionné pour moi et je suis sur une ligne de commande terminal.

3 votes

Au cas où cela serait utile à quelqu'un rencontrant la même erreur (je sais que ce fil de discussion est un peu ancien !), vous pouvez surveiller l'utilisation de la mémoire de R en quasi temps réel à partir du Moniteur d'activité. J'ai trouvé cela utile pour diagnostiquer le problème.

5 votes

Peut-être évident, mais j'ai dû redémarrer R pour que cela fonctionne

26voto

Purrsia Points 145

Cela peut également être fait à travers R studio.

library(usethis) 
usethis::edit_r_environ()

lorsque l'onglet s'ouvre dans R studio, ajoutez ceci à la 1ère ligne: R_MAX_VSIZE=100Gb (ou la mémoire que vous souhaitez allouer).

Redémarrez R et/ou redémarrez l'ordinateur et exécutez à nouveau la commande R qui vous a donné l'erreur de mémoire.

19voto

Ömer An Points 119

J'ai eu le même problème, augmenter le "R_MAX_VSIZE" n'a pas aidé dans mon cas, au lieu de cela, supprimer les variables qui ne sont plus nécessaires a résolu le problème. J'espère que cela aidera ceux qui luttent ici.

rm(large_df, large_list, large_vector, temp_variables)

0voto

Berent Lunde Points 49

J'avais ce problème lors de l'exécution Rcpp::sourceCpp("my_cpp_file.cpp"), ce qui a entraîné

Erreur : mémoire du vecteur épuisée (limite atteinte?)

le changement de fichier Makevars l'a résolu pour moi. Actuellement, il ressemble à

CC=gcc
CXX=g++
CXX11=g++
CXX14=g++
cxx18=g++
cxx1X=g++
LDFLAGS=-L/usr/lib

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X