получение имени кадра данных при загрузке файла .rda в R - PullRequest
6 голосов
/ 18 декабря 2011

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

Я пробовал

a<-load("al.rda")

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

Error:object 'a' not found

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

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

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

Error: C stack usage is too close to the limit

Ответы [ 5 ]

5 голосов
/ 18 декабря 2011

Используйте 'attach' и затем 'ls' с аргументом name.Примерно так:

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

Файл данных теперь находится на вашем пути поиска в позиции 2, скорее всего.Делай:

search()
ls(pos=2)

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

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

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

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

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

4 голосов
/ 18 декабря 2011

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

load("al.rda")

наконец-то сработало.

4 голосов
/ 18 декабря 2011

Функция 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"

РЕДАКТИРОВАТЬ Поскольку при загрузке файла вы получаете ошибку, возможно, она каким-то образом повреждена.Попробуйте это и скажите, что он печатает:

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 или аналогичным)?

3 голосов
/ 27 сентября 2016

У меня была похожая проблема, и она была решена без переустановки R. Например, выполнение

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

1 голос
/ 26 июля 2016

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

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

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

...