По какой причине readRDS не работает в Windows? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь сделать мой код переносимым на Windows и понял, что хотя я использую file.path для создания путей, функция readRDS все равно не будет работать, например:

file.exists('C:/temp/HarvardX-Skillability/data/rds/Users.rds')
> TRUE
readRDS('C:/temp/HarvardX-Skillability/data/rds/Users.rds')
> Error in readRDS("C:/temp/HarvardX-Skillability/data/rds/Users.rds") : 
  error reading from connection

Я тоже пробовал:

 file.exists('data/rds/Users.rds')
 > TRUE
 readRDS('data/rds/Users.rds')
 > Error in readRDS("data/rds/Users.rds") : error reading from connection

Почему это так? и как я могу это исправить? В Ubuntu 18.04 отлично работает ...

Ответы [ 2 ]

3 голосов
/ 08 января 2020

Кажется, проблема в загрузке / клонировании файлов из GitHub. После запуска git clone в вашем хранилище , когда я открываю свою локальную копию Tags.rds в текстовом редакторе, я вижу это:

version https://git-lfs.github.com/spec/v1
oid sha256:b4a2cb3775126a3895e9533ef9ef4ad786b2021cfd1660b07028fbef85b025bb
size 641098

(это все содержимое файл). Кроме того, выполнение file Tags.rds (в терминале на MacOS) сообщает Tags.rds: ASCII text. (Все файлы .rds похожи на это.)

Веб-интерфейс GitHub подтверждает, что ваши файлы в репо в порядке:

enter image description here

Этот вопрос выглядит связанным. После установки Git LFS и запуска git lfs pull я загружаю полный файл (и readRDS(), кажется, работает нормально).

0 голосов
/ 09 января 2020

Виновник ОП был чем-то действительно неожиданным, я также не предоставил информацию для него, потому что не мог подозревать, что это была проблема.

Проблема заключалась в том, что файлы загружались автоматически с использованием download.file(url, filePath, extra="L") и Windows известно, что это вызывает проблемы с двоичными файлами, которые не являются ожидаемыми. Вот почему файлы rds были неузнаваемы.

Я обнаружил при создании кода восстановления обработки исключений, который пытался загрузить те же файлы из папки Dropbox, а затем столкнулся с той же проблемой, поэтому не из-за Git LFS.

Решение OP состояло в том, чтобы добавить аргумент download.file(..., mode="wb").

См. Вопрос R файл для разархивирования в разделе Windows

...