如何安全地load多个RData?
2020-07-07 本文已影响0人
周运来就是我
朴素地说,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