Je travaille depuis un certain temps avec un certain nombre de fichiers volumineux contenant des données d’expression génique, et j’ai récemment eu un problème avec le chargement de ces données dans R, après la mise à niveau vers R 3.5.0. Après avoir utilisé environ 8 Go de mémoire (mon mac a 16 Go de RAM), si j'essaie de lire dans un autre fichier, le message d'erreur suivant s'affiche:
Error: vector memory exhausted (limit reached?)
J'ai trouvé un message précédent ( Erreur: mémoire de vecteur épuisée (limite atteinte?) ) suggérant que j'essaie de définir la variable d'environnement R_MAX_VSIZE sur une valeur plus élevée. J'ai donc essayé ce qui suit:
Sys.setenv(R_MAX_VSIZE = 16e9)
Cependant, j'ai toujours la même erreur. Est-ce que je ne règle pas correctement la variable environnementale? y a-t-il quelque chose qui me manque?
Informations de session:
R version 3.5.0 (2018-04-23)
Platform: x86_64-Apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.5
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages: [1] data.table_1.11.4
loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0
Pour ceux qui utilisent Rstudio, j'ai constaté que définir Sys.setenv('R_MAX_VSIZE'=32000000000)
ne fonctionne que sur la ligne de commande et que définir ce paramètre lors de l'utilisation de Rstudio n'empêche pas cette erreur:
Error: vector memory exhausted (limit reached?)
Après avoir lu un peu plus, j'ai trouvé le fil this , qui clarifie le problème avec Rstudio et identifie une solution, illustrée ci-dessous:
Étape 1: Ouvrez le terminal,
Étape 2:
cd ~
touch .Renviron
open .Renviron
Étape 3: Enregistrez les éléments suivants en tant que première ligne de .Renviron
:
R_MAX_VSIZE=100Gb
Remarque: cette limite inclut à la fois la mémoire physique et virtuelle. la définition de _MAX_VSIZE = 16 Go sur un ordinateur doté de 16 Go de mémoire physique ne peut donc pas empêcher cette erreur. Vous devrez peut-être jouer avec ce paramètre, en fonction des spécifications de votre machine.
R 3.5 impose une nouvelle limite système pour l’allocation de mémoire. À partir des notes de publication:
La variable d’environnement R_MAX_VSIZE peut maintenant être utilisée pour spécifier la taille de tas maximale du vecteur. Sous macOS, sauf indication contraire de cette variable d’environnement, la taille maximale du segment de vecteur est définie sur 16 Go au maximum et sur la mémoire physique disponible. Cela évite que le processus R ne soit tué lorsque macOS libère de la mémoire.
Vous pouvez remplacer cela. Vous risquez de sur-associer et de tuer le processus, mais c'est probablement ce qui se passait si vous frappiez un mur dur avec R 3.4.4 ou tout ce que vous utilisiez auparavant.
Exécutez les opérations suivantes dans Terminal pour créer une variable d’environnement temporaire R_MAX_VSIZE
D’une valeur de 32 Go (à modifier): export R_MAX_VSIZE=32000000000
Ou si vous ne voulez pas ouvrir Terminal et l'exécuter chaque fois que vous voulez démarrer une session R, vous pouvez ajouter la même ligne à votre profil bash. Ouvrez Terminal et trouvez votre profil bash open .bash_profile
Et, dans un éditeur de texte, ajoutez la ligne ci-dessus.
Vous devrez toujours ouvrir Terminal et démarrer R à partir de là. Vous pouvez exécuter R dans le terminal en exécutant simplement R
ou vous pouvez ouvrir l'interface graphique open -n /Applications/R.app
.
Pour effectuer cette modification dans une session R, utilisez Sys.setenv('R_MAX_VSIZE'=32000000000)
et pour vérifier la valeur, utilisez Sys.getenv('R_MAX_VSIZE')
.
Une solution pour ceux qui ne connaissent peut-être pas la ligne de commande peut être trouvée ici :
En bref, la solution consiste à utiliser le package usethis
.
usethis::edit_r_environ()
ouvrira le .Renviron qui se trouve dans votre répertoire personnel. Ce .Renviron affecte tout le travail de Rstudio
usethis::edit_r_environ("project")
ouvrira un .Renviron local à votre projet. Les modifications apportées à ce fichier n'affectent que le travail effectué dans ce projet Rstudio particulier.
Une fois ouvert, le R_MAX_VSIZE
var peut être réglé.
La page liée contient également des liens vers ce blog , qui décrit le processus de démarrage de R en détail.