ChatGPT解决这个技术问题 Extra ChatGPT

加载工作区时出现“bad magic number”错误的原因以及如何避免?

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

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

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

猜猜:它不是工作区文件,它是 R 命令的日志。
我怀疑相同,尝试使用 source(filename) 而不是 load(filename) 加载它。
无赖 - 将不得不检查。我希望我可以声称这是一个初学者的错误。
与@JoshuaUlrich 所说的类似,我load ed 了一些我已经write.table ed 而不是save ed 的东西并得到了这个错误。哎呀。
当我使用 load 加载数据库时出现此错误,应该使用 loadDb

L
Laurenz Albe

当我不小心使用 load() 而不是 source()readRDS() 时,我收到了该错误。


当我不小心使用 load() 而不是 read.csv() 时,我也是如此。 :p
当我不小心使用 load() 而不是 readRDS() 时,我也是如此,第 2 部分(是的,9 个月后,我回到这里几乎是同样的错误)。
这也发生在我身上,但原因不同:一个队友给我发了一个 .rdata 扩展名不正确的 rds 文件,所以我尝试使用 load(),得到错误,然后尝试 readRDS(),它成功了。
j
jhearn

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

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

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


这非常有帮助!
谢谢!这对我来说很有帮助(刚刚从 ubuntu 存储库安装了 R - 并尝试打开我几周前使用稍新版本的 R 在另一台机器上创建的 RData 文件)
D
David Arenburg

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

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

source("myfile.ext")

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

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

E
Ellis Valentiner

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

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


z
zx8754

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


好技巧...我不得不尝试几个包功能,但使用 readr:: 可以轻松浏览这些功能。 readr::read_rds 最终对我有用。
D
DCZ

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

object <- readRDS("object.rds")

l
luchonacho

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

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

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


J
Juan Manuel Ortiz de Zarate

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


D
David Arenburg

如果您正在使用 devtools,请尝试使用以下方式保存文件:

devtools::use_data(x, internal = TRUE)

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

来自文档:

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


devtools:: 现在使用this::
M
Martina

当我更新我的 R 和 R Studio 版本并加载我在以前版本下创建的文件时,会发生此错误。所以我重新安装了我之前的 R 版本,一切正常。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅