Определение имени объекта, загруженного в 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
Однако есть ли лучший способ сделать это?
Ответы
Ответ 1
Предполагая, что в saved.file.rda
есть только один объект, о:
bar <- load('saved.file.rda')
the.object <- get(bar)
или просто:
bar <- get(load('saved.file.rda'))
Если вы хотите быть "опрятным" и не загрязнять свою глобальную рабочую область с загруженным вами материалом (и забыл имя), вы можете загрузить свой объект в среду и указать, что в этой среде вы вызываете get
.
Может быть:
temp.space <- new.env()
bar <- load('saved.file.rda', temp.space)
the.object <- get(bar, temp.space)
rm(temp.space)
...
Ответ 2
Как вы можете прочитать в ?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"
Ответ 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." Чтобы получить весь массив
путей поиска, используйте поиск(). Так
вы получите доступ к пути поиска для
новый объект по поиску() [2]
-
используйте 'detach' для удаления объекта