110

我尝试加载我的 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 

我对技术细节不是特别感兴趣,但主要是我如何引起它以及我将来如何防止它。以下是有关情况的一些说明:

  1. 我在训练营分区上运行 Windows XP 的 MacBook Pro 上运行 R 2.15.1。
  2. 这个工作区文件显然有问题,因为它的重量只有~80kb,而我所有的其他文件通常都> 10,000
  3. 周末我在 R 中运行一个外部建模程序并将其输出存储到不同的对象。我在几天的时间里运行了模型的几次迭代,例如 output_Saturday <- call_model()
  4. 模型输出没有什么特别之处,它只是一个包含 beta、VC 矩阵、模型规范等插槽的列表。
4

9 回答 9

134

当我不小心使用load()而不是source()or时,我得到了那个错误readRDS()

于 2014-02-02T00:57:33.320 回答
46

另外值得注意的是 R Core Team 的文档中的以下内容,该文档总结了 v3.5.0 之后 R 版本的变化(此处):

R 有新的序列化格式(版本 3),它支持 ALTREP 框架对象的自定义序列化...格式 3 的序列化数据不能被版本 3.5.0 之前的 R 版本读取。

我在 v3.6.0 中保存工作区时遇到了这个问题,然后与使用 v3.4.2 的同事共享文件。我可以通过在我的保存功能中添加“version=2”来解决这个问题。

于 2019-08-07T17:36:53.163 回答
19

假设您的文件名为“myfile.ext”

如果您尝试加载的文件不是 R 脚本,您将使用

source("myfile.ext")

您可以尝试该readRDS函数并将其分配给变量名:

my.data <- readRDS("myfile.ext")
于 2013-08-01T17:43:55.550 回答
10

幻数来自 UNIX 类型的系统,其中文件的前几个字节包含一个指示文件类型的标记。

此错误表明您正在尝试将无效文件类型加载到 R 中。由于某种原因,R 不再将此文件识别为 R 工作区文件。

于 2013-08-01T17:48:49.993 回答
7

安装readr包,然后使用library(readr).

于 2017-05-15T04:52:13.293 回答
4

当您尝试load()使用 rds 对象而不是使用

object <- readRDS("object.rds")
于 2018-04-04T12:47:55.467 回答
4

saveRDS()使用而不是保存时出现错误save()。例如save(iris, file="data/iris.RData")

这为我解决了这个问题。我在这里找到了这个信息

另请注意,使用save()/load()对象以最初保存时使用的相同名称加载(即,您无法重命名它,直到它已经以最初保存时的名称加载到 R 环境中)。

于 2019-07-16T05:37:00.893 回答
1

当我将 Rdata 文件保存在旧版本的 R 中然后我尝试在新版本中打开时,我遇到了这个问题。我通过将我的 R 版本更新到最新来解决。

于 2019-06-11T14:59:15.707 回答
0

如果您正在使用devtools尝试保存文件:

devtools::use_data(x, internal = TRUE)

然后,删除之前保存的所有文件。

来自文档:

internal 如果为 FALSE,则将每个对象保存在数据目录中的单独 .rda 文件中。每当加载包时,这些都是可用的。如果为 TRUE,则将所有对象存储在单个 R/sysdata.rda 文件中。这些对象仅在包中可用。

于 2017-01-21T19:23:09.937 回答