如何将rds文件加载到R中

19

我正在尝试加载一个应该包含一些数据的 rds 文件。

教授建议使用 readRDS(),然而R给出了一个长长的错误信息,我自己无法理解。

我正在尝试将文件加载并放置到一个对象中。

我希望有人能够提供一些聪明的解决方案来解决这个问题。

Canteen_clean <- readRDS("C:/Users/a_s_j/OneDrive/Studie/Cand.merc.Business Intelligence/1. Semester/R for Business Analytics/.Rproj/39 - Graphics/Exercises02/canteen_clean.rds")

在 gzfile(file, "rb") 中出现错误:无法打开连接
此外,警告信息为:In gzfile(file, "rb") : 无法打开压缩文件 'C:/Users/a_s_j/OneDrive/Studie/Cand.merc.Business Intelligence/1. Semester/R for Business Analytics/.Rproj/39 - Graphics/Exercises02/canteen_clean.rds',可能的原因是 'No such file or directory'

我正在使用 pacman::p_load("pacman", "tidyverse") 来加载所需的软件包。


5
错误信息中重要的部分是“'No such file or directory'”,这意味着文件并不在你所指定的位置。 - JBGruber
2
你可以使用 file.exists() 来检查文件是否存在。很可能是你输入的文件路径有误。 - Jonny Phelps
1
你的路径中的 [...]/.Rproj/[...] 看起来有些可疑,请确保你的路径是有效的。 - J.P. Le Cavalier
你也可以使用 'here' 包来构建到项目文件的路径。了解更多:https://cran.r-project.org/web/packages/here/index.html - Dr Nisha Arora
3个回答

31

在R中,与其手动输入冗长的文件路径,更好的方法是让系统为您完成输入。因此,可以像这样操作:

 filename <- file.choose()
 Canteen_clean <- readRDS(filename)

第一行代码将打开通常的文件选择对话框;您可以选择所需文件,文件名将存储在filename变量中。第二行代码将使用该名称来打开它。


2
这是一个可怕的建议。您永远不应该在代码中间引入强制用户交互。没有用户想要运行R脚本,突然被要求与正在运行的脚本交互,更不用说使用鼠标+GUI进行选择了。OP的问题与其文件路径有关,可能是Windows路径或空格字符等问题。很抱歉,但这是一个糟糕的答案,我希望阅读这篇文章的R用户将避免使用这种编程技术。 - user5359531
@user5359531:我认为你误解了上下文。这不是为他人编写的程序,而是一个单独的用户尝试读取一个文件,但却收到“文件未找到”的消息。对于该用户来说,找到正确的文件名最简单的方法是使用file.choose() - user2554330
我理解这个背景。所有公开发布在网上的代码都是其他人最终会使用的代码,而在SO上发布的解决方案也会被其他新手程序员用于他们的代码中,其他人最终也会不得不使用。就目前而言,这个问题是“如何加载.Rds文件”的谷歌搜索结果中排名靠前的一个。修复OP的文件路径处理问题更适合在评论中进行,将“接受的解决方案”设为file.choose()在这种情况下是一个糟糕的主意。 - user5359531
@user5359531:我理解你的观点,但是你错误地将其应用于这种情况。自从我发表答案后,问题已经被编辑(不是由作者编辑),删除了一些上下文,即这是一个R初学者的问题,但我认为仍然是提问者的正确答案。如果您知道更好的回答方式,则应发布另一个答案。但我认为您正在抱怨这不是对另一个问题的答案。你应该问那个问题,而不是抱怨这个答案。 - user2554330

4
你可以尝试使用setwd()函数来改变当前工作目录的位置, 然后使用该目录下的文件。
list.files() 

要列出该文件夹中存在的所有文件,请使用以下命令:

然后使用:

t1 <- readRDS("/filename.rds")
head(t1)

获取数据的方法。

希望这能解决您的问题。

---------代码---------------------------

> setwd(""C:/Users/a_s_j/OneDrive/Studie/Cand.merc.Business
> Intelligence/1. Semester/R for Business Analytics/.Rproj/39 -
> Graphics/Exercises02")
> 
> list.files()
> 
> t1 = readRDS("canteen_clean.rds") head(t1)


1

尝试使用\\代替/。这是对我有效的方法。

如果这不起作用,有可能rds文件已经损坏,因此您需要重新创建它,或者如果您可以获得一个新副本,则尝试使用新副本。我曾经遇到过同样的问题。

希望这能帮到您。


1
“/” 是正确的方法。 “\\” 也可以,但仅适用于 Windows,因为它是唯一使用反斜杠作为路径的操作系统。 - JBGruber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接