Сообщение об ошибке с использованием read_excel Ошибка: std::bad_alloc

Я пытаюсь открыть файл Excel с помощью функции read_excel() из пакета readxl. Но я не знаю, как указать путь к файлу Excel.

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

"Ошибка: std::bad_alloc".


person ribery77    schedule 02.07.2015    source источник
comment
Что положить в файл.выбрать?   -  person ribery77    schedule 02.07.2015
comment
Ничего не кладите в file.choose(). Это альтернатива выбору файла Excel. Появится окно, в котором вы сможете выбрать файл.   -  person Paulo MiraMor    schedule 02.07.2015
comment
Я пробую именно так, как вы мне сказали. Окна появляются, но опять та же ошибка. Ошибка: std::bad_alloc. Размер файла 80 мб.   -  person ribery77    schedule 02.07.2015
comment
Так что это может быть ограничение памяти на вашей платформе. Вы пробовали с небольшим подмножеством этого файла?   -  person Paulo MiraMor    schedule 02.07.2015
comment
Я пытаюсь с меньшим файлом excel около 80 КБ, он работает. Могу ли я иметь ограничение памяти.   -  person ribery77    schedule 02.07.2015
comment
Так что это, вероятно, ограничение памяти. Вы можете попробовать экспортировать файл в .csv и прочитать его, используя read.csv. Это потребует меньше памяти.   -  person Paulo MiraMor    schedule 02.07.2015


Ответы (6)


Сначала загрузите пакет:

library(readxl)

Согласно странице разработки пакета, вам просто нужно указать имя файла в виде строки, например:

read_excel("my-old-spreadsheet.xls")
read_excel("my-new-spreadsheet.xlsx")

Вы также можете указать имя или номер листа:

read_excel("my-spreadsheet.xls", sheet = "data")
read_excel("my-spreadsheet.xls", sheet = 2)

Убедитесь, что вы находитесь в правильном каталоге, используя getwd(). Если нет, измените его с помощью setwd()

person Paulo MiraMor    schedule 02.07.2015

Как отмечено в комментариях, это сообщение об ошибке вызвано проблемой с размером файла. См. проблему с пакетом по адресу: https://github.com/hadley/readxl/issues/150.

person Sam Firke    schedule 11.03.2016
comment
Я получаю ту же ошибку. У меня работало read_excel, но вдруг оно перестало работать. - person Polar Bear; 23.08.2016

Только что столкнулся с этой проблемой, при повторном чтении файла я прочитал успешно!

Как указывает vladdsm на github, закрытие и повторное открытие Rstudio может решить проблему https://github.com/tidyverse/readxl/issues/150#issuecomment-236883769

person psychonomics    schedule 24.07.2018
comment
Глупо, но работает... - person CoR; 13.04.2021

В моем случае я открыл файл в LibreOffice Calc (конечно, вы можете использовать Excel, но у меня его нет), удалил сложные строки заголовков, содержащие объединенные ячейки и цветные фоны и т. д., вручную упростил его до однострочного заголовка, затем сохранил файл. Новый файл Excel был намного меньше, и теперь можно было импортировать его с помощью readxl::read_excel().

Возможно, программа также очистила файл изнутри другим способом.

Конечно, это работает только в том случае, если импорт в R является одноразовой задачей, один файл Excel с несколькими листами не более.

person knb    schedule 05.04.2018

У меня была такая же проблема при попытке прочитать файл xlsx в среде R. Размер файла не большой. Проблема была решена после переустановки пакета readxl.

person coding_is_fun    schedule 13.11.2019

Я предполагаю, что это проблема с вашей памятью. Возможно, у вас были открыты другие программы, поэтому не хватило памяти для загрузки и обработки файла данных в R. Это может произойти, если файл данных большой.

Вы можете легко проверить это в диспетчере задач, пытаясь прочитать файл xlsx.

с уважением Басти

person Bastian Blume    schedule 30.06.2021