首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取多个.rds文件并创建一个对象

读取多个.rds文件并创建一个对象
EN

Stack Overflow用户
提问于 2018-03-02 16:27:28
回答 2查看 3.6K关注 0票数 1

我在stackexchange上看到了其他例子,但似乎无法使它们适应我的代码。

问题:我有一个文件夹的.rds文件,我想读到R,然后堆叠所有的文件在一起,我可以采取均值和标准差。如果相关的话,所有的.rds文件在进入R时都是“正式类RasterLayer”。

示例代码:

代码语言:javascript
复制
 # file path to folder where .rds files are stored
   path = "~/Predictions/"
   # create place to store files
   stack <-""
   # create vector of all .rds files in folder
   pred.dates <- dir(path, pattern =".rds")
   # loop to bring in each .rds file
   for(i in 1:length(pred.dates)){
   file <- readRDS(file.names[i],".rds")
   stack <- rbind(stack, file)
   }

   # take mean of all .rds files stacked together and plot 
   pred_mean <- mean(stack, na.rm=T)
   plot(pred_mean)

   # take sd of all .rds files stacked together and plot 
   pred_sd <- sd(stack, na.rm = T)
   plot(pred_sd)

但是,它返回错误:

代码语言:javascript
复制
Error in gzfile(file, "rb") : cannot open the connection
In addition: Warning message:
In gzfile(file, "rb") :
  cannot open compressed file 'Pred_.rds', probable reason 'No such file or directory'

这看起来应该很简单,但也许我没有使用正确的函数。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-02 19:31:33

我认为F. Privé的解决方案的问题在于他们使用rbind而不是stack。我建议你

代码语言:javascript
复制
library(raster)
files <- list.files(path = path, pattern = "\\.rds$", full.names = TRUE)
r <- lapply(files, readRDS)
s <- stack(r)
票数 5
EN

Stack Overflow用户

发布于 2018-03-02 16:36:35

你可以:

代码语言:javascript
复制
files <- list.files(path = path, pattern = "\\.rds$", full.names = TRUE)
stack <- do.call("rbind", lapply(files, readRDS))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49073292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档