Подтвердить что ты не робот

Причина ошибки "плохое магическое число" при загрузке рабочего пространства и как ее избежать?

Я попытался загрузить рабочую область R и получил эту ошибку:

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 

Меня не интересуют технические детали, но в основном, как я это вызвал и как я могу предотвратить это в будущем. Вот некоторые замечания по ситуации:

  • Я запускаю R 2.15.1 на MacBook Pro под управлением Windows XP на разделе bootcamp.
  • В файле рабочего пространства есть что-то явно неправильное, так как оно весит всего ~ 80 кб, а все мои остальные обычно > 10 000
  • В выходные я запускал внешнюю программу моделирования в R и сохранял ее вывод на разные объекты. Я провел несколько итераций модели в течение нескольких дней, например output_Saturday < - call_model()
  • Для вывода модели ничего особенного нет, это просто список с слотами для бета-версий, VC-матриц, спецификации модели и т.д.
4b9b3361

Ответ 1

Я получил эту ошибку, когда случайно использовал load() вместо source() или readRDS().

Ответ 2

Предполагая, что ваш файл называется "myfile.ext"

Если файл, который вы пытаетесь загрузить, не является R-скриптом, для которого вы бы использовали

source("myfile.ext")

Вы можете попробовать функцию readRDS и назначить ее для имени переменной:

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

Ответ 3

Также стоит отметить следующее из документа R Core Team, в котором обобщены изменения в версиях R после v3.5.0 (здесь):

R имеет новый формат сериализации (версия 3), который поддерживает пользовательскую сериализацию Объекты платформы ALTREP... Сериализованные данные в формате 3 не могут быть прочитаны версиями R до версии 3.5.0.

Я столкнулся с этой проблемой, когда я сохранил рабочее пространство в v3.6.0, а затем поделился файлом с коллегой, который использовал v3.4.2. Я смог решить проблему, добавив "version = 2" в мою функцию сохранения.

Ответ 4

Магическое число исходит из систем типа UNIX, где первые несколько байтов файла содержат маркер, указывающий тип файла.

Эта ошибка указывает, что вы пытаетесь загрузить недействительный тип файла в R. По какой-то причине R уже не распознает этот файл как файл рабочей области R.

Ответ 5

Установите пакет readr, затем используйте library(readr).

Ответ 6

Это также происходит, когда вы пытаетесь load() объект rds вместо использования

object <- readRDS("object.rds")

Ответ 7

Я получил ошибку при сборке пакета R (используя roxygen2)

Причиной в моем случае было то, что я сохранил data/mydata.RData с помощью saveRDS() а не save(). Например, save(iris, file="data/iris.RData")

Это исправило проблему для меня. Я нашел эту информацию здесь

Также обратите внимание, что с помощью save()/load() объект загружается с тем же именем, с которым он изначально сохранен (то есть вы не можете переименовать его, пока он не будет уже загружен в среду R под именем, которое он имел при первоначальном сохранении Это).

Ответ 8

Просто используйте метод

source()

вместо

load()

Это работает!

Ответ 9

У меня возникла аналогичная ошибка, когда я случайно попытался загрузить файл .proj.

Ответ 10

Если вы работаете с devtools попробуйте сохранить файлы с помощью:

devtools::use_data(x, internal = TRUE)

Затем удалите все файлы, сохраненные ранее.

Из документа:

internal Если FALSE, сохраняет каждый объект в отдельных файлах .rda в каталоге данных. Они доступны всякий раз, когда пакет загружен. Если TRUE, все объекты хранятся в одном файле R/sysdata.rda. Эти объекты доступны только в пакете.

Ответ 11

что помогло мне, было myData < - read.csv( "fileLocation" )

Ответ 12

Используйте my_data < -read.csv( "hw1_data.csv" ), где hw1_data.csv - это файл csv, который содержит данные. Также файлы csv должны находиться в текущем рабочем директоре R.

Ответ 13

У меня была эта проблема, когда я сохранял файл Rdata в более старой версии R, а затем пытался открыть в новой. Я решил, обновив мою версию R до новейшей.