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:
- J'exécute R 2.15.1 sur un MacBook Pro exécutant Windows XP sur une partition bootcamp.
- Il y a manifestement quelque chose qui ne va pas dans ce fichier d'espace de travail, car il ne pèse que ~ 80 Ko alors que tous mes autres sont généralement> 10000
- Au cours du week-end, j'ai exécuté un programme de modélisation externe dans R et stocké sa sortie dans différents objets. J'ai exécuté plusieurs itérations du modèle au cours de plusieurs jours, par exemple output_Saturday <- call_model ()
- Il n'y a rien de spécial dans la sortie du modèle, c'est juste une liste avec des emplacements pour les bêtas, les matrices VC, la spécification du modèle, etc.
r
workspace
magic-numbers
N Brouwer
la source
la source
source(filename)
au lieu deload(filename)
.load
édité quelque chose que j'avaiswrite.table
plutôtsave
édité et j'ai obtenu cette erreur. Oups.load
, oùloadDb
doit être utilisé.Réponses:
J'ai eu cette erreur lorsque j'ai utilisé accidentellement à la
load()
place desource()
oureadRDS()
.la source
load()
place deread.csv()
. : pload()
au lieu dereadRDS()
(oui, 9 mois plus tard, je suis de retour ici pour à peu près la même erreur).Il convient également de noter ce qui suit à partir d'un document de l'équipe R Core résumant les changements dans les versions de R après la v3.5.0 ( ici ):
R a un nouveau format de sérialisation (version 3) qui prend en charge la sérialisation personnalisée des objets du framework ALTREP ... Les données sérialisées au format 3 ne peuvent pas être lues par les versions de R antérieures à la version 3.5.0.
J'ai rencontré ce problème lorsque j'ai enregistré un espace de travail dans la v3.6.0, puis partagé le fichier avec un collègue qui utilisait la v3.4.2. J'ai pu résoudre le problème en ajoutant "version = 2" à ma fonction de sauvegarde.
la source
En supposant que votre fichier s'appelle "myfile.ext"
Si le fichier que vous essayez de charger n'est pas un R-script, pour lequel vous utiliseriez
vous pouvez essayer la
readRDS
fonction et l'assigner à un nom de variable:la source
Le nombre magique provient des 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 en tant que fichier d'espace de travail R.
la source
Installez le
readr
package, puis utilisezlibrary(readr)
.la source
readr::
il est facile de parcourir les fonctions.readr::read_rds
est ce qui a fonctionné pour moi à la fin.Cela se produit également lorsque vous essayez d'
load()
utiliser un objet rds au lieu d'utiliserla source
J'ai eu l'erreur lors de la construction d'un package R (en utilisant roxygen2)
La cause dans mon cas était que j'avais économisé
data/mydata.RData
avecsaveRDS()
plutôt quesave()
. Par exemplesave(iris, file="data/iris.RData")
Cela a résolu le problème pour moi. J'ai trouvé cette information ici
Notez également qu'avec
save()
/load()
l'objet est chargé avec le même nom avec lequel il est initialement enregistré (c'est-à-dire que vous ne pouvez pas le renommer tant qu'il n'est pas déjà chargé dans l'environnement R sous le nom qu'il portait lors de son enregistrement initial).la source
J'ai eu ce problème lorsque j'ai enregistré le fichier Rdata dans une ancienne version de R, puis j'ai essayé d'ouvrir dans une nouvelle. J'ai résolu en mettant à jour ma version R à la plus récente.
la source
Si vous travaillez avec,
devtools
essayez d'enregistrer les fichiers avec:Ensuite, supprimez tous les fichiers enregistrés précédemment.
De doc:
la source