首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将对象加载到我从R数据文件指定的变量名中?

如何将对象加载到我从R数据文件指定的变量名中?
EN

Stack Overflow用户
提问于 2011-04-07 15:04:46
回答 7查看 48.6K关注 0票数 106

使用save将变量保存在R数据文件中时,该变量将以保存它的会话中的任何名称保存。当我稍后从另一个会话加载它时,它被加载了相同的名称,加载脚本不可能知道这个名称。此名称可能会覆盖加载会话中同名的现有变量。有没有一种方法可以安全地将对象从数据文件加载到指定的变量名中,而不会有破坏现有变量的风险?

示例:

保存会话:

代码语言:javascript
复制
x = 5
save(x, file="x.Rda")

正在加载会话:

代码语言:javascript
复制
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.

我希望它是如何工作的:

代码语言:javascript
复制
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-04-07 21:40:58

如果只保存单个对象,请使用.RDS文件,而不要使用.Rdata文件:

代码语言:javascript
复制
x <- 5
saveRDS(x, "x.rds")
y <- readRDS("x.rds")
all.equal(x, y)
票数 103
EN

Stack Overflow用户

发布于 2014-08-23 05:44:55

我使用以下代码:

代码语言:javascript
复制
loadRData <- function(fileName){
#loads an RData file, and returns it
    load(fileName)
    get(ls()[ls() != "fileName"])
}
d <- loadRData("~/blah/ricardo.RData")
票数 43
EN

Stack Overflow用户

发布于 2011-04-07 15:47:36

您可以创建一个新环境,将.rda文件加载到该环境中,然后从该环境中检索对象。但是,这会施加一些限制:要么您知道对象的原始名称,要么文件中只保存了一个对象。

此函数返回从提供的.rda文件加载的对象。如果文件中有多个对象,则返回一个任意对象。

代码语言:javascript
复制
load_obj <- function(f)
{
    env <- new.env()
    nm <- load(f, env)[1]
    env[[nm]]
}
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5577221

复制
相关文章

相似问题

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