【问题标题】:readRDS(file) in RR中的读取RDS(文件)
【发布时间】:2011-09-22 08:42:26
【问题描述】:

每当我尝试在 R 中安装软件包时,都会收到以下错误:

Error in readRDS(file) : unknown input format

这只是在我系统崩溃后才开始发生的。我在 Windows 7 下运行 32 位 R 2.13.0。我尝试删除并重新安装 R,但仍然出现错误。有什么办法可以在不删除所有内容(即我已安装的所有软件包)并重新开始的情况下解决此问题?

谢谢

【问题讨论】:

  • 我安装了 R 3.4 并注意到这个错误总是发生。令人惊讶的是,安装 R 3.3 而不是 3.4 为我解决了这个问题。 (这可能是什么原因?)
  • @nikpod 如果你在 3.3 中保存了文件,也许你无法在 3.4 中读取它

标签: r crash packages


【解决方案1】:

这些是我遇到的建议:

  1. 删除运行 R 的目录中的 .Rhistory.RData 文件。
  2. 运行update.packages()
  3. 尝试检测库目录中的“坏文件”。你可以在R中做到这一点

    # List the library paths
    # The issue is likely to be in the first directory
    paths = .libPaths()
    
    ## Try and detect bad files
    list.files(paths, 
           pattern = "^00LOCK*|*\\.rds$|*\\.RDS$",
           full.names = TRUE)
    
    ## List files of size 0
    l = list.files(paths, full.names = TRUE)
    l[sapply(l, file.size) == 0]
    

    删除所有突出显示的文件/目录。如果你真的想的话,你可以使用file.remove()

  4. 删除存储下载包的目录。

只有解决方案 3 对我有用。

参考:

  • R-sig-Debian mailing list
  • 选项 3 是过去几年不同人提供的答案的组合,包括 Chunxiao Xu、Larry Hunsicker 和 Frank Harrell

【讨论】:

  • 同样的故事。不得不切换到另一个目录
  • 我已经尝试了上述所有解决方案,但似乎没有一个有效。我找不到 .Rhistory 和 Rdata 文件。
  • @amc 同意。我创建了一个简单的 R 解决方案来尝试检测坏文件/目录
  • 是的,对我来说,这与 1 个有问题的库有关,该库中有一个由较新的 R 构建的 rds 文件。我在找到一个之前手动尝试删除了几十个库。我希望我首先找到了这个解决方案!
  • 我在解决方案3中运行代码,但它只返回目录中的路径,即i.stack.imgur.com/MLxdw.png。你能解释一下如何使用file.remove()自动删除大小为0的文件吗?
【解决方案2】:

运行find /usr/local/lib/R/site-library/ /usr/lib/R/library/ /usr/lib/R/site-library/ ~/.local/lib/ -iname '*rds' -a -size 0,然后删除找到的文件。

【讨论】:

  • 这成功了(不需要删除整个包目录)。我还必须删除一个包锁定文件 (/usr/local/lib/R/site-library/00LOCK-pkg)。删除文件后,我重新安装了受影响的软件包。
  • 我爱你。这对我有用,我不喜欢为了修复 R 而不得不与 R 争吵。
【解决方案3】:

Chunxiao Xu 和 Rando Hinn 的上述解决方案对我有用,只是稍作调整。

首先,将目录更改为您的个人 R 包目录,然后运行:find -iname '*rds' -a -size 0

删除上述列表中包含任何长度为 0 的文件的目录。然后重新打开 R(或 RStudio)并重新安装已删除的包。

您现在应该可以再次列出软件包了。

Chunxiao Xu 上面的原始建议列出了所有的 R 包目录。但是这些目录的确切位置会因安装而异,并且必须为您的安装编辑它们的地址。

拉里·亨斯克

【讨论】:

    【解决方案4】:

    一些简单的尝试:如果是 .rda 文件,请使用 load 而不是 readRDS。然后,您可以将加载的文件另存为 .rds 并再次尝试 readRDS

    【讨论】:

    • 与此有关。我通过从互联网再次下载有问题的文件来修复它。似乎有一个小的损坏,错误出现了
    【解决方案5】:

    为了解决这个错误,我必须采取以下措施:

    • 打开您的 Rstudio,转到软件包下的安装选项卡
    • 记下您安装到库的路径。(将保存您的包的位置)
    • 转到安装库路径。然后硬删除最近的包
    • 在 Rstudio 中刷新您的包详细信息

    【讨论】:

      【解决方案6】:

      这发生在我在安装几个 R 包的过程中必须重新启动机器之后。我通过物理删除相应库目录中的文件来删除最新安装的软件包,重新安装它们,一切都很好。我还必须删除库目录中的 00LOCK 目录。

      【讨论】:

        【解决方案7】:

        您可能对 R 包有一些问题。 看看是你安装了一些打包后出现的问题还是你复制了这些包。

        您可以做的是从库中复制所有包并将其保存在某处,然后在库中复制一些包并重新启动 R 测试它,看看它是如何工作的,您必须对所有包一一尝试。 我有同样的问题,这是由于包装问题。

        【讨论】:

          【解决方案8】:

          我在打开 .RDS 文件时也遇到了几个问题,“从连接读取错误”或“未知输入格式”。我尝试了几个 R 版本,版本为 3.4.2。以下工作: (我不小心卸载了rstudio又重新安装了,还安装了旧的R版本3.4.2,不知道有什么变化)

          1. 设置新的工作目录
          2. 我直接打开 RDS 文件而不是下载它(所以只保存到临时文件),然后我能够在 R 中打开它
          3. 我将它从临时文件移到了我的新工作目录,并使用了Data_Essay_Account <- readRDS("C:/.../newdirectory/Data_Essay_Account.RDS") 命令,它成功了。

          以某种方式正确下载它然后移动它不起作用,只有在我将它放在临时文件中之后。我最初尝试过硬删除包对我不起作用。

          【讨论】:

          • 请使用格式化工具正确编辑和格式化您的问题/答案。句子中的代码格式为code 非常重要的单词要粗体,次要的单词要斜体必要时也可以使用列表
          【解决方案9】:

          与这里的前几个答案不同,我的问题不是通过安装 RStudio 或清理本地文件来解决的,而是通过重写 RDS 文件来解决的。

          我可以确认这一点,因为该文件存储在云中,并且从各种 Windows 和 Mac 笔记本电脑读取它都失败了,但来自同一个 S3 存储桶的类似 RDS 文件可以正常工作。

          当我重新编写RDS 文件时,问题就消失了。

          【讨论】:

            【解决方案10】:

            我在几个论坛上检查了这个问题,然后我尝试了这个,它对我有用:

            1) 先把ggplot2包去掉

            remove.packages("ggplot2")
            

            2) 然后再次安装包

            install.packages("ggplot2")
            

            3) 重启 rstudio 并再次安装你的包,希望对你有帮助

            似乎问题出在所需的包(在我的情况下为 ggplot2)损坏并妨碍了任何新依赖包的安装。

            【讨论】:

              【解决方案11】:

              我遇到了与 OP 相同的问题,但在我的情况下,问题 .rds 文件不是 0 字节,而是文件大小 >0 并且充满了 NULL 字符(至少我打开它们时看到的是在记事本++中)

              通过在加载给我错误的库之前使用debugonce(loadNamespace)(在我的示例中是VIM 包),我最终将我的问题追溯到forcats 包的META 文件夹中损坏的.rds 文件,在我安装VIM时作为第5代导入安装的

                  (In the rstudio environment pane)
               __NamesSpacesLoading__    chr[1:5] "forcats" "haven" "rio" "car" "VIM"
              

              然后我通过删除并重新安装 forcats 解决了 VIM 问题
              调整@csgillespie 接受的答案中的代码,我可以通过尝试读取以下所有 rds 文件来找到这一点

              paths = .libPaths()
              
              l <- list.files(paths, 
                         pattern = "*\\.rds$",
                         ignore.case = T,
                         recursive = T,
                         full.names = TRUE)
              
              checkRDS <- function(file) {
                tryCatch({
                  readRDS(file)
                  "OK"
                },
                error = function(cond) {
                  return("Error")
                })
              } 
              
              l[sapply(l,checkRDS)=="Error"]
              

              【讨论】:

                【解决方案12】:

                我能够通过使用.libPaths() 并找到 4.1 文件夹来修复它(我的 R 版本是 4.1,因此可能会有所不同)。从那里我关闭了 R studio 并删除了每个包的所有文件夹。

                我重新安装了所有软件包,并通过错误消息找到了无法下载的软件包。当我找到未下载的软件包时,我使用以下命令安装它们:install.packages("package", type = "binary")

                有点长,但解决了我所有的问题。

                【讨论】:

                  猜你喜欢
                  • 2018-07-12
                  • 2016-12-12
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-01-22
                  • 2021-03-03
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多