Ich habe versucht, meinen R-Arbeitsbereich zu laden und habe folgende Fehlermeldung erhalten:
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
Ich interessiere mich nicht besonders für die technischen Details, sondern hauptsächlich dafür, wie ich sie verursacht habe und wie ich sie in Zukunft verhindern kann. Hier einige Hinweise zur Situation:
- Ich verwende R 2.15.1 auf einem MacBook Pro mit Windows XP auf einer Bootcamp-Partition.
- Diese Arbeitsbereichsdatei stimmt offensichtlich nicht, da sie nur ~ 80 KB wiegt, während alle meine anderen normalerweise> 10.000 sind
- Über das Wochenende habe ich ein externes Modellierungsprogramm in R ausgeführt und dessen Ausgabe in verschiedenen Objekten gespeichert. Ich habe mehrere Iterationen des Modells über mehrere Tage ausgeführt, z. B. output_Saturday <- call_model ()
- Die Modellausgabe enthält nichts Besonderes, sondern nur eine Liste mit Steckplätzen für Betas, VC-Matrizen, Modellspezifikationen usw.
r
workspace
magic-numbers
N Brouwer
quelle
quelle
source(filename)
stattdessen mit zu ladenload(filename)
.load
etwas bearbeitet, das ichwrite.table
eher bearbeitet als bearbeitet habe,save
und diesen Fehler erhalten. Hoppla.load
, wo verwendetloadDb
werden soll.Antworten:
Ich habe diesen Fehler erhalten, als ich versehentlich
load()
anstelle vonsource()
oder verwendet habereadRDS()
.quelle
load()
statt verwendet haberead.csv()
. : pload()
stattreadRDS()
(ja, 9 Monate später, ich bin hier wieder für so ziemlich die gleichen Fehler).Erwähnenswert ist auch Folgendes aus einem Dokument des R-Kernteams, in dem Änderungen in Versionen von R nach Version 3.5.0 ( hier ) zusammengefasst sind:
R verfügt über ein neues Serialisierungsformat (Version 3), das die benutzerdefinierte Serialisierung von ALTREP-Framework-Objekten unterstützt. Serialisierte Daten im Format 3 können von Versionen von R vor Version 3.5.0 nicht gelesen werden.
Dieses Problem trat auf, als ich einen Arbeitsbereich in Version 3.6.0 speicherte und die Datei dann für einen Kollegen freigab, der Version 3.4.2 verwendete. Ich konnte das Problem beheben, indem ich meiner Speicherfunktion "version = 2" hinzufügte.
quelle
Angenommen, Ihre Datei heißt "myfile.ext"
Wenn die Datei, die Sie laden möchten, kein R-Skript ist, für das Sie verwenden würden
Sie können die
readRDS
Funktion ausprobieren und einem Variablennamen zuweisen:quelle
Die magische Zahl stammt von Systemen vom Typ UNIX, bei denen die ersten Bytes einer Datei eine Markierung enthielten, die den Dateityp angibt.
Dieser Fehler zeigt an, dass Sie versuchen, einen ungültigen Dateityp in R zu laden. Aus irgendeinem Grund erkennt R diese Datei nicht mehr als R-Arbeitsbereichsdatei.
quelle
Installieren Sie das
readr
Paket und verwenden Sie eslibrary(readr)
.quelle
readr::
es einfach, die Funktionen zu durchsuchen.readr::read_rds
hat am Ende für mich funktioniert.Es tritt auch auf, wenn Sie versuchen,
load()
ein rds-Objekt zu verwenden, anstatt es zu verwendenquelle
Ich habe den Fehler beim Erstellen eines R-Pakets (mit roxygen2) erhalten.
Die Ursache in meinem Fall war , dass ich gerettet hatte
data/mydata.RData
mitsaveRDS()
stattsave()
. Z.Bsave(iris, file="data/iris.RData")
Dies hat das Problem für mich behoben. Ich habe diese Info hier gefunden
Beachten Sie auch, dass mit
save()
/load()
das Objekt mit demselben Namen geladen wird, mit dem es ursprünglich gespeichert wurde (dh Sie können es nicht umbenennen, bis es bereits unter dem Namen, den es beim ersten Speichern hatte, in die R-Umgebung geladen wurde).quelle
Ich hatte dieses Problem, als ich die Rdata-Datei in einer älteren Version von R speicherte und dann versuchte, sie in einer neuen zu öffnen. Ich habe das Problem gelöst, indem ich meine R-Version auf die neueste Version aktualisiert habe.
quelle
Wenn Sie mit arbeiten,
devtools
versuchen Sie, die Dateien zu speichern mit:Löschen Sie dann alle zuvor gespeicherten Dateien.
Aus doc:
quelle