Ответ 1
Я получил эту ошибку, когда случайно использовал load()
вместо source()
или readRDS()
.
Я попытался загрузить рабочую область 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
Меня не интересуют технические детали, но в основном, как я это вызвал и как я могу предотвратить это в будущем. Вот некоторые замечания по ситуации:
Я получил эту ошибку, когда случайно использовал load()
вместо source()
или readRDS()
.
Предполагая, что ваш файл называется "myfile.ext"
Если файл, который вы пытаетесь загрузить, не является R-скриптом, для которого вы бы использовали
source("myfile.ext")
Вы можете попробовать функцию readRDS
и назначить ее для имени переменной:
my.data <- readRDS("myfile.ext")
Также стоит отметить следующее из документа R Core Team, в котором обобщены изменения в версиях R после v3.5.0 (здесь):
R имеет новый формат сериализации (версия 3), который поддерживает пользовательскую сериализацию Объекты платформы ALTREP... Сериализованные данные в формате 3 не могут быть прочитаны версиями R до версии 3.5.0.
Я столкнулся с этой проблемой, когда я сохранил рабочее пространство в v3.6.0, а затем поделился файлом с коллегой, который использовал v3.4.2. Я смог решить проблему, добавив "version = 2" в мою функцию сохранения.
Магическое число исходит из систем типа UNIX, где первые несколько байтов файла содержат маркер, указывающий тип файла.
Эта ошибка указывает, что вы пытаетесь загрузить недействительный тип файла в R. По какой-то причине R уже не распознает этот файл как файл рабочей области R.
Установите пакет readr
, затем используйте library(readr)
.
Это также происходит, когда вы пытаетесь load()
объект rds вместо использования
object <- readRDS("object.rds")
Я получил ошибку при сборке пакета R (используя roxygen2)
Причиной в моем случае было то, что я сохранил data/mydata.RData
с помощью saveRDS()
а не save()
. Например, save(iris, file="data/iris.RData")
Это исправило проблему для меня. Я нашел эту информацию здесь
Также обратите внимание, что с помощью save()
/load()
объект загружается с тем же именем, с которым он изначально сохранен (то есть вы не можете переименовать его, пока он не будет уже загружен в среду R под именем, которое он имел при первоначальном сохранении Это).
Просто используйте метод
source()
вместо
load()
Это работает!
У меня возникла аналогичная ошибка, когда я случайно попытался загрузить файл .proj
.
Если вы работаете с devtools
попробуйте сохранить файлы с помощью:
devtools::use_data(x, internal = TRUE)
Затем удалите все файлы, сохраненные ранее.
Из документа:
internal Если FALSE, сохраняет каждый объект в отдельных файлах .rda в каталоге данных. Они доступны всякий раз, когда пакет загружен. Если TRUE, все объекты хранятся в одном файле R/sysdata.rda. Эти объекты доступны только в пакете.
что помогло мне, было myData < - read.csv( "fileLocation" )
Используйте my_data < -read.csv( "hw1_data.csv" ), где hw1_data.csv - это файл csv, который содержит данные. Также файлы csv должны находиться в текущем рабочем директоре R.
У меня была эта проблема, когда я сохранял файл Rdata в более старой версии R, а затем пытался открыть в новой. Я решил, обновив мою версию R до новейшей.