Próbowałem załadować mój obszar roboczy R i otrzymałem ten błąd:
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
Nie interesują mnie szczegóły techniczne, ale przede wszystkim to, jak to spowodowałem i jak mogę temu zapobiec w przyszłości. Oto kilka uwag dotyczących sytuacji:
- Używam wersji R 2.15.1 na MacBooku Pro z systemem Windows XP na partycji bootcamp.
- Jest coś oczywiście nie tak w tym pliku obszaru roboczego, ponieważ waży tylko ~ 80kb, podczas gdy wszystkie moje inne mają zwykle> 10 000
- Przez weekend uruchamiałem zewnętrzny program do modelowania w R i zapisywałem jego wyniki w różnych obiektach. Wykonałem kilka iteracji modelu w ciągu kilku dni, np. Output_Saturday <- call_model ()
- Nie ma nic specjalnego w wyjściu modelu, to tylko lista z gniazdami na wersje beta, matryce VC, specyfikację modelu itp.
r
workspace
magic-numbers
N Brouwer
źródło
źródło
source(filename)
zamiastload(filename)
.load
ed coś miałemwrite.table
ed zamiastsave
ed i dostał ten błąd. Ups.load
, gdzieloadDb
powinno być używane.Odpowiedzi:
Otrzymałem ten błąd, gdy przypadkowo użyłem
load()
zamiastsource()
lubreadRDS()
.źródło
load()
zamiastread.csv()
. : pload()
zamiastreadRDS()
(tak, 9 miesięcy później, wróciłem tutaj z powodu prawie tego samego błędu).Warto również zwrócić uwagę na następujący fragment z dokumentu zespołu R Core Team podsumowującego zmiany w wersjach R po wersji 3.5.0 ( tutaj ):
R ma nowy format serializacji (wersja 3), który obsługuje niestandardową serializację obiektów struktury ALTREP ... Zserializowane dane w formacie 3 nie mogą być odczytywane przez wersje R przed wersją 3.5.0.
Napotkałem ten problem, gdy zapisałem obszar roboczy w wersji 3.6.0, a następnie udostępniłem plik koledze, który korzystał z wersji 3.4.2. Udało mi się rozwiązać ten problem, dodając „version = 2” do mojej funkcji zapisu.
źródło
Zakładając, że twój plik nosi nazwę „myfile.ext”
Jeśli plik, który próbujesz załadować, nie jest skryptem R, którego użyjesz
source("myfile.ext")
możesz wypróbować
readRDS
funkcję i przypisać ją do nazwy zmiennej:my.data <- readRDS("myfile.ext")
źródło
Magiczna liczba pochodzi z systemów typu UNIX, w których na pierwszych kilku bajtach pliku znajdował się znacznik wskazujący typ pliku.
Ten błąd wskazuje, że próbujesz załadować niepoprawny typ pliku do R. Z jakiegoś powodu R nie rozpoznaje już tego pliku jako pliku obszaru roboczego R.
źródło
Zainstaluj
readr
pakiet, a następnie użyjlibrary(readr)
.źródło
readr::
temu łatwo je przeglądać.readr::read_rds
jest tym, co w końcu zadziałało.Występuje również, gdy próbujesz
load()
użyć obiektu rds zamiast używaćobject <- readRDS("object.rds")
źródło
Wystąpił błąd podczas tworzenia pakietu R (przy użyciu roxygen2)
Przyczyną w moim przypadku było to, że uratował
data/mydata.RData
sięsaveRDS()
zamiastsave()
. Na przykładsave(iris, file="data/iris.RData")
To rozwiązało problem. Znalazłem te informacje tutaj
Zauważ również, że z
save()
/load()
obiekt jest ładowany pod tą samą nazwą, pod którą jest początkowo zapisywany (tj. Nie możesz zmienić jego nazwy, dopóki nie zostanie załadowany do środowiska R pod nazwą, którą miał, kiedy go zapisałeś).źródło
Miałem ten problem, kiedy zapisałem plik Rdata w starszej wersji R, a następnie próbowałem otworzyć w nowej. Rozwiązałem, aktualizując moją wersję R do najnowszej.
źródło
Jeśli pracujesz z,
devtools
spróbuj zapisać pliki za pomocą:devtools::use_data(x, internal = TRUE)
Następnie usuń wszystkie zapisane wcześniej pliki.
Z dokumentu:
źródło