Search code examples
rwindowsgitrdsgit-lfs

What's the reason that readRDS doesn't seem to work in Windows?


I'm trying to make the my code portable to Windows and realized that even though I use file.path to create paths still the readRDS function won't work, for example:

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

I also tried:

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

Why is that? and how can I fix it? In Ubuntu 18.04 works perfectly ...


Solution

  • The culprit to the OP was something really unexpected, I also didn't provide the information for it because I couldn't suspect this was the issue.

    The problem was those files were being downloaded automatically using download.file(url, filePath, extra="L") and in Windows this is known to cause issues with binary files that are not the expected ones. This is why the rds files were unrecognizable.

    I found out while building exception handling recovery code that was looking to download the same files from a Dropbox folder and then came to the same issue, therefore it wasn't because of Git LFS.

    The OP solution was to add the argument download.file(..., mode="wb").

    See the question R trouble unzipping file under Windows