使用save
将变量保存在R数据文件中时,该变量将以保存它的会话中的任何名称保存。当我稍后从另一个会话加载它时,它被加载了相同的名称,加载脚本不可能知道这个名称。此名称可能会覆盖加载会话中同名的现有变量。有没有一种方法可以安全地将对象从数据文件加载到指定的变量名中,而不会有破坏现有变量的风险?
示例:
保存会话:
x = 5
save(x, file="x.Rda")
正在加载会话:
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
我希望它是如何工作的:
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
发布于 2011-04-07 21:40:58
如果只保存单个对象,请使用.RDS
文件,而不要使用.Rdata
文件:
x <- 5
saveRDS(x, "x.rds")
y <- readRDS("x.rds")
all.equal(x, y)
发布于 2014-08-23 05:44:55
我使用以下代码:
loadRData <- function(fileName){
#loads an RData file, and returns it
load(fileName)
get(ls()[ls() != "fileName"])
}
d <- loadRData("~/blah/ricardo.RData")
发布于 2011-04-07 15:47:36
您可以创建一个新环境,将.rda文件加载到该环境中,然后从该环境中检索对象。但是,这会施加一些限制:要么您知道对象的原始名称,要么文件中只保存了一个对象。
此函数返回从提供的.rda文件加载的对象。如果文件中有多个对象,则返回一个任意对象。
load_obj <- function(f)
{
env <- new.env()
nm <- load(f, env)[1]
env[[nm]]
}
https://stackoverflow.com/questions/5577221
复制相似问题