Здесь много комментариев. Я постараюсь объединить их в один четкий ответ. Оригинальный постер (OP) пытается прочитать несколько книг Excel в R, используя функцию read_excel
из превосходного пакета R под названием readxl . ОП говорит, что только первые 9 рабочих книг могут быть импортированы. После предоставления файлов через DropBox r2evans мог импортировать только рабочие книги 1, 9 и 10, в то время как я мог импортировать только рабочие книги 1 и 9. В ходе дальнейшего опроса OP сказал, что файлы были «сгенерированы из программного обеспечения».
Я совершенно уверен, что в этом заключается проблема. Файлы Excel были сгенерированы программным обеспечением, предположительно, не Excel. ОП не сказал, какое программное обеспечение генерировало файлы. Тот факт, что они сказали «программное обеспечение», а не Excel, будет означать, что Excel не создавал файлы.
Я также считаю, что рабочие книги 1 и 9 были открыты OP, а затем сохранены и затем упакованы в архив вместе с другие. На самом деле, сохранение файлов после их открытия в Excel не является обязательным требованием, так как Excel выполняет автоматическое сохранение для вас, даже если файл закрыт без сохранения. В любом случае, открытие файла и последующее его закрытие (с сохранением или без сохранения) приводит к тому, что файл волшебным образом «импортируется» в R с использованием readxl
. Я не знаю почему, но могу только предположить, что причиной проблемы является разрешение программного обеспечения (предположительно, не Excel) на создание файла Excel. Обратите внимание, что здесь нет ошибок и предупреждений. Данные просто пусты (без строк, см. Ниже попытку импорта "Book11.xls"). У меня нет никакого ответа, кроме как открыть каждый файл один за другим, а затем закрыть их (с сохранением или без).
> Book11 <- read_excel("E:/SO/Book11.xls", skip=7)
> Book11
# A tibble: 0 x 0
Редактировать : Обратите внимание, что "Book11 .xls "на самом деле содержит данные. Функция read_excel
успешно считывает файл (без ошибок), но безуспешно импортирует данные (опять же, без ошибок). Это странно для меня. Все остальные файлы, кроме Book1.xls и Book9.xls, дают одинаковые результаты. То есть пустой тибл. Все файлы не пусты. Они содержат много строк и столбцов. См. Ниже ...
"Book1.xls" был вероятно , открытый OP (или кем-то еще) и может быть импортирован:
> Book1 <- read_excel("E:/SO/Book1.xls", skip=7)
> Book1
# A tibble: 1,524 x 35
Position `Position [µm]` `Al-K` `Si-K` `S-KA` `K-KA` `Ca-KA` `Ti-KA`
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0 0 3 11.3 1179 0 3076. 3.67
2 1 14.5 6.33 10.3 1230. 0 3030. 2.67
3 2 29.0 1.33 15.3 1160. 0 3080. 3.33
4 3 43.4 1 11.3 1232. 0 3112. 0.667
5 4 57.9 3.67 8.67 1227. 0 3116. 1.67
6 5 72.4 5.33 8.67 1313 0 3153 6
7 6 86.9 5.67 16 1181. 0 3100. 0.333
8 7 101. 2 15 1218 0 3130. 1.33
9 8 116. 2.33 11.3 1207. 0 3078. 1.33
10 9 130. 3 15.3 1249 0 3089. 7
# ... with 1,514 more rows, and 27 more variables: `Mn-KA` <dbl>,
# `Fe-KA` <dbl>, `Mg-K` <dbl>, `Na-KA` <dbl>, `Cr-KA` <dbl>,
# `Co-KA` <dbl>, `Ni-KA` <dbl>, `Cu-KA` <dbl>, `Zn-KA` <dbl>,
# `As-KA` <dbl>, `P-KA` <dbl>, `Sr-KA` <dbl>, `Zr-KA` <dbl>,
# `Mo-KA` <dbl>, `Rb-KA` <dbl>, `Br-KA` <dbl>, `Y-KA` <dbl>,
# `Cl-KA` <dbl>, `Ga-KA` <dbl>, `Cd-KA` <dbl>, `V-KA` <dbl>,
# `Cs-KA` <dbl>, `Ba-KA` <dbl>, `Hf-LA` <dbl>, `Pb-LA` <dbl>,
# `U-LA` <dbl>, `Th-LA` <dbl>
Я также пытался использовать пакет XLConnect, и результаты были такими же. ( Edit : я говорю al ie. Результаты не совпадают. Этот пакет выдает ошибку при попытке импортировать файл. В отличие от пакета readxl, который дает NO ERROR, но не может импортировать данные .)
library(XLConnect)
> wb <- loadWorkbook("E:/SO/Book11.xls")
Error: LeftoverDataException (Java): Initialisation of record 0x92(PaletteRecord) left 2 bytes remaining still to be read.
> wb <- loadWorkbook("E:/SO/Book1.xls") # No error
Итак, является ли это ошибкой в этих двух пакетах, остается спорным. Я бы сказал, нет. Тот факт, что при открытии файлов в Excel появляется предупреждающее сообщение, говорит о том, что это скорее всего проблема с программным обеспечением, которое генерировало файлы.