.RData файлы не имеют индекса (содержимое сериализуется как один большой парный список). Вы можете взломать способ пройти через список пар и назначить только нужные вам записи, но это непросто, так как вы не можете сделать это на уровне R.
Однако вы можете просто преобразовать файл .RData в базу данных с ленивой загрузкой, которая сериализует каждую запись отдельно и создает индекс. Приятно то, что нагрузка будет по требованию:
# convert .RData -> .rdb/.rdx
e = local({load("New.RData"); environment()})
tools:::makeLazyLoadDB(e, "New")
Загрузка БД затем загружает только индекс, но не содержимое. Содержимое загружаются как они используются:
lazyLoad("New")
ls()
x # if you had x in the New.RData it will be fetched now from New.rdb
Так же, как с load()
вы можете указать среду для загрузки в так что вам не нужно загрязнять глобальное рабочее пространство и т.д.
В комментариях @DWin говорит, что нет. http://stackoverflow.com/questions/6550510/examining-contents-of-rdata-file-by-attaching-into-a-new-environment-possible –
Но во всех вопросах-R я откладываю Симона. –