2011-12-17 2 views
6

Я пытаюсь загрузить файл .rda в r, который был сохраненным фреймворком данных. Я не помню его имени.Получение имени dataframe от загрузки файла .rda в R

Я попытался

a<-load("al.rda") 

, который затем не позволит мне сделать что-нибудь с. Я получаю ошибку

Error:object 'a' not found 

Я также попытался использовать знак =.

Как загрузить этот файл .rda, чтобы я мог его использовать?

I restared R с нагрузкой ("al.rda), и я знаю, получаю следующую ошибку

Error: C stack usage is too close to the limit 
+0

просто выполните 'load (" al.rda ")' и выполните 'ls()', чтобы проверить, какие объекты R были загружены в глобальную среду. – Ramnath

+0

Я получаю в конце закрытие неиспользуемого соединения 3 (al.rda). что я должен искать здесь? – megv

+1

@megv - еще несколько вещей, которые нужно попробовать: 1. Установите более старую версию R и попробуйте загрузить ее там - возможно, у файла есть старые и новые версии R, с которыми есть проблемы. 2. Попробуйте загрузить его в Linux. – Tommy

ответ

4

Мне пришлось переустановить R ... так или иначе это было повреждено. Простая команда, которую я ожидал от

load("al.rda") 

окончательно работал.

+0

+1 - Я чувствую вашу боль! Это было неприятно ... – Tommy

5

Использование 'прикрепить', а затем что-то 'LS' с именем аргумента, как:.

attach("al.rda") 
ls("file:al.rda") 

файл данных теперь на вашем пути поиска в положении 2, скорее всего сделать:..

search() 
ls(pos=2) 

для просветления Typing т он имя любого объекта, сохраненного в al.rda, теперь получит его, если у вас нет чего-то в позиции поиска 1, но R, вероятно, предупредит вас с некоторым сообщением о вещи, маскирующей другую вещь, если она есть.

Однако я подозреваю, что вы ничего не сохранили в своем файле RData. Две причины:

  1. Вы говорите, что вы не получите сообщение об ошибке
  2. нагрузки говорит, что нет ничего загружен

я могу дублировать эту ситуацию. Если вы сохраните файл (file = "foo.RData"), вы получите пустой файл RData - то, что вы, вероятно, хотели сделать, - save.image (file = "foo.RData"), который сохраняет все ваши объекты.

Насколько велик ваш .rda-файл? Если его менее 100 байт (мои пустые файлы RData имеют длину 42 байта), то я подозреваю, что это произошло.

+0

Я получаю персонаж (0) – megv

+0

Я подозреваю, что в нем ничего нет. См. Править выше ... – Spacedman

+0

размер 317,888kb – megv

4

Функция load возвращает список переменных, которые он загрузил. Я подозреваю, что вы действительно получили ошибку , когда вы загружаете «al.rda». Что именно выводит R при загрузке?

Пример того, как он должен работы:

d <- data.frame(a=11:13, b=letters[1:3]) 
save(d, file='foo.rda') 
a <- load('foo.rda') 
a # prints "d" 

Просто, чтобы быть уверенным, убедитесь, что функция load вы на самом деле назвать это оригинальный один:

find("load") # should print "package:base" 

EDIT Поскольку вы теперь получите сообщение об ошибке при загрузке файла, оно, вероятно, повреждено в некотором роде.Попробуйте это и сказать, что он печатает:

file.info("a1.rda") # Prints the file size etc... 
readBin("a1.rda", "raw", 50) # reads first 50 bytes from the file 

Не имея доступа к файлу, это трудно исследовать больше ... Может быть, вы могли бы поделиться файл каким-то образом (http://www.filedropper.com или аналогичный) ?

+0

угадывание возможных проблем, 'getwd()' и 'list.files()' (или 'load (file.choose())' являются некоторыми полезными инструментами для вычисления почему файл не может быть загружен (если это не так); * и * убедитесь, что файл действительно называется 'al.rda', а не' a1.rda' ... –

+0

Это команда, которую я использую> l1 < -load ("al.rda") > l1 Ошибка: объект 'l1' не найден Кроме того: Предупреждающее сообщение: закрытие неиспользуемого соединения 3 (al.rda) – megv

+0

@megv - что '' find ("load") 'print? – Tommy

0

Обычно я использую save для сохранения только одного объекта, и затем я использую следующий метод утилиты для извлечения этого объекта в заданное имя переменной с использованием нагрузки, но во временное пространство имен, чтобы избежать перезаписи существующих объектов. Может быть, это будет полезно для других, а также:

load_first_object <- function(fname){ 
    e <- new.env(parent = parent.frame()) 
    load(fname, e) 
    return(e[[ls(e)[1]]]) 
} 

Метод, конечно, может быть продлен также возвращать именованные объекты и списки объектов, но это простой вариант для меня самым полезным.

1

У меня была аналогичная проблема, и она была решена без переустановки R., например, делать

load("al.rda) работает отлично, однако если вы a <- load("al.rda") не будет работать.

+0

Да, это была моя проблема. 'самостоятельно устанавливает значение переменной. – schoon

+0

отсутствует конечная цитата выше s/be 'load (" al.rda ")' –

Смежные вопросы