如何安全地load多个RData?

朴素地说,RData可以存多个R变量;rds一般只存一个R变量。

如:

# Saving on object in RData format
save(data1, file = "data.RData")
# Save multiple objects
save(data1, data2, file = "data.RData")
# To load the data again
load("data.RData")

有时候在我们需要Loda数据的时候,如果Loda的RData中的变量名与当前的变量名有重复,就会导致被覆盖。这回引起一些不容易发现的bug。

那么该如何避免呢?就是每次Loda的时候,给load里面的数据匹配上相应的环境空间。昨天在逛Rbolg的时候,发现一位大佬,也谈到了这个问题,并给出了解决方案:

  LoadToEnvironment <- function(RData, env = new.env()){
    load(RData, env)
    return(env) 
  }

这样在load的时候,我们就可以:

 iris.env <- LoadToEnvironment('iris.RData')
  daisy.env <- LoadToEnvironment('daisy.RData')
  iris.fit <- iris.env$fit1
  daisy.fit <- daisy.env$fit1
  # Compare iris.fit and daisy.fit

相当于,给每个RData穿一个外衣。怎么样漂漂亮吗?

Safe Loading of RData Files
Saving Data into R Data Format: RDS and RDATA

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。