R Studio保存导入数据用于Knit的方法及load加载Rds文件报错求助
解决RStudio Knit时加载数据的报错问题
嘿,我一眼就揪出你报错的根源了——你用load()去读取.Rds文件啦!这完全不配对啊!给你理清楚R里保存和加载数据的正确逻辑,一步步教你搞定Knit:
一、先搞对「保存-加载」的配对关系
R里保存数据有两套常用组合,绝对不能混着用:
- 单对象保存:用
saveRDS()存成.Rds文件,加载时必须用readRDS(),而且要把结果赋值给变量 - 多对象/整环境保存:用
save()或save.image()存成.Rdata/.RData文件,加载时用load()
你之前用saveRDS()生成了.Rds文件,却用load()去读,这就好比拿钥匙开错了锁,肯定打不开嘛!
二、正确的保存操作(重新来一遍也没关系)
如果你的数据是单个数据框(比如cheesedata和airline),用下面的代码保存:
# 保存单个数据对象到.Rds文件 saveRDS(cheesedata, file = "cheesedata.Rds") saveRDS(airline, file = "airline.Rds")
要是你想一次性保存多个对象,就用save():
# 同时保存cheesedata和airline到.Rdata文件 save(cheesedata, airline, file = "my_data.Rdata")
三、在Rmd里正确加载数据
对应上面的保存方式,选对应的加载代码:
情况1:加载.Rds文件
必须用readRDS(),并且把读取结果赋值给变量(不然数据不会出现在环境里):
# 读取.Rds文件,赋值给对应变量 cheesedata <- readRDS("cheesedata.Rds") airline <- readRDS("airline.Rds")
情况2:加载.Rdata文件
直接用load()就行,加载后对象会自动出现在环境中:
# 读取.Rdata文件,里面的对象直接可用 load("my_data.Rdata")
四、确保Knit时的工作目录不出错
Knit的时候,RStudio默认会把你的Rmd文件所在的文件夹当成工作目录,所以一定要保证你的数据文件(.Rds/.Rdata)和Rmd文件在同一个文件夹里!
如果数据在其他文件夹,就写完整的文件路径,比如:
cheesedata <- readRDS("~/Documents/MyRProject/cheesedata.Rds")
最后给你个小建议
Knit之前,先在RStudio控制台里跑一遍加载数据的代码,确认数据能正常读出来,再去点Knit按钮——这样能提前排除大部分路径和加载函数的问题,省得白等半天报错。
内容的提问来源于stack exchange,提问作者Cory
相关产品推荐
相关产品推荐

