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

时间:2010-03-26 02:15:09

标签: r

想象一下,您有一个对象foo,保存为saved.file.rda,如下所示:

foo <- 'a'
save(foo, file='saved.file.rda')

假设您将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

但是,有更好的方法吗?

3 个答案:

答案 0 :(得分:19)

假设saved.file.rda中只保存了一个对象,大约:

bar <- load('saved.file.rda')
the.object <- get(bar)

或只是:

bar <- get(load('saved.file.rda'))

如果您想要“整洁”并且不会使用您加载的内容污染全局工作区(并忘记名称),您可以将对象加载到环境中,并在调用{{1 }}

也许:

get

答案 1 :(得分: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"

答案 2 :(得分:3)

好吧,我确实知道一个函数,不需要这样做(即,在你刚加载的R二进制文件中找到对象的名称) - 换句话说,你可以使用这种技术来加载R二进制文件文件而不是'load':

file_path = "/User/dy/my_R_data/a_data_set.RData"
attach(file_path, pos=2, name=choose_a_name, warn.conflict=T)
  • 'warn.conflicts = T'是默认值 选项

  • 'pos = 2'也是默认值; “2” 指的是您搜索中的位置 路径。例如,位置1是 “.GlobalEnv。”获得整个阵列 搜索路径,使用搜索()。所以 你会访问搜索路径 search()[2]

  • 的新对象
  • 使用'detach'删除对象