确定R中加载的对象的名称

and*_*ewj 13 r

想象一下,你有一个foo你保存的对象saved.file.rda如下:

foo <- 'a'
save(foo, file='saved.file.rda')
Run Code Online (Sandbox Code Playgroud)

假设您加载saved.file.rda到具有多个对象的环境中但忘记了所在对象的名称saved.file.rda.R中有没有办法确定这个名字?

您可以通过以下方式执行此操作,这看起来有点笨重:

bar <- load('saved.file.rda')
eval(parse(text=bar)) # this will pull up the object that was in saved.file.rda
Run Code Online (Sandbox Code Playgroud)

但是,有没有更好的方法呢?

Ste*_*lou 19

假设只保存了一个对象saved.file.rda,关于:

bar <- load('saved.file.rda')
the.object <- get(bar)
Run Code Online (Sandbox Code Playgroud)

要不就:

bar <- get(load('saved.file.rda'))
Run Code Online (Sandbox Code Playgroud)

如果您希望"整洁"并且不会使用您加载的内容污染全局工作区(并忘记名称),则可以将对象加载到环境中,并指定您调用的环境get.

也许:

temp.space <- new.env()
bar <- load('saved.file.rda', temp.space)
the.object <- get(bar, temp.space)
rm(temp.space)
...
Run Code Online (Sandbox Code Playgroud)


Mar*_*rek 5

您可以阅读,?load可以将数据加载到指定的环境.然后你可以使用getls获得你想要的东西:

tmp_env <- new.env()
load('saved.file.rda', tmp_env)
get(ls(tmp_env), envir=tmp_env) # it returns only first object in environment
# [1] "a"
Run Code Online (Sandbox Code Playgroud)