La cause de l’erreur «mauvais numéro magique» lors du chargement d’un espace de travail et comment l’éviter?

J’ai essayé de charger mon espace de travail R et j’ai reçu cette erreur:

Error: bad restore file magic number (file may be corrupted) -- no data loaded In addition: Warning message: file 'WORKSPACE_Wedding_Weekend_September' has magic number '#gets' Use of save versions prior to 2 is deprecated 

Je ne suis pas particulièrement intéressé par les détails techniques, mais surtout par la façon dont je l’ai causé et comment je peux l’empêcher à l’avenir. Voici quelques notes sur la situation:

  1. J’utilise R 2.15.1 sur un MacBook Pro exécutant Windows XP sur une partition bootcamp.
  2. Il y a évidemment quelque chose qui ne va pas dans ce fichier d’espace de travail, car il ne pèse que ~ 80kb alors que tous mes autres sont généralement plus de 10.000
  3. Pendant le week-end, je exécutais un programme de modélisation externe en R et stockais ses résultats sur différents objects. J’ai effectué plusieurs itérations du modèle sur plusieurs jours, par exemple output_Saturday <- call_model ()
  4. Il n’y a rien de particulier à la sortie du modèle, c’est juste une liste avec des emplacements pour les bêtas, les masortingces VC, les spécifications du modèle, etc.

J’ai eu cette erreur quand j’ai utilisé accidentellement load() au lieu de source() ou readRDS() .

En supposant que votre fichier s’appelle “myfile.ext”

Si le fichier que vous essayez de charger n’est pas un script R, pour lequel vous utiliseriez

 source("myfile.ext") 

vous pouvez essayer la fonction readRDS et l’affecter à un nom de variable:

 my.data <- readRDS("myfile.ext") 

Le nombre magique provient de systèmes de type UNIX où les premiers octets d’un fichier contenaient un marqueur indiquant le type de fichier.

Cette erreur indique que vous essayez de charger un type de fichier non valide dans R. Pour une raison quelconque, R ne reconnaît plus ce fichier comme fichier de travail R.

Installez le paquet readr , puis utilisez library(readr) .

Il se produit également lorsque vous essayez de load() un object rds au lieu d’utiliser

 object <- readRDS("object.rds") 

Si vous travaillez avec devtools essayez de sauvegarder les fichiers avec:

 devtools::use_data(x, internal = TRUE) 

Ensuite, supprimez tous les fichiers enregistrés précédemment.

De doc:

internal Si FALSE, enregistre chaque object dans des fichiers .rda individuels du répertoire de données. Ceux-ci sont disponibles chaque fois que le paquet est chargé. Si TRUE, stocke tous les objects dans un seul fichier R / sysdata.rda. Ces objects sont uniquement disponibles dans le package.