想象一下,您有一个对象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
但是,有更好的方法吗?
答案 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
中阅读,您可以将数据加载到指定的环境。然后,您可以使用get
和ls
来获得您想要的内容:
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'删除对象