readRDS似乎无法在Windows中运行的原因是什么?

问题描述 投票:0回答:2

[我试图使我的代码可移植到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中可以完美运行...

r windows git rds git-lfs
2个回答
3
投票

问题似乎出在下载 /从GitHub克隆文件。在git clone上运行your repository之后,当我在文本编辑器中打开Tags.rds的本地副本时,会看到以下内容:

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

(这是文件的全部内容)。此外,在MacOS的终端中运行file Tags.rds会报告Tags.rds: ASCII text。 (所有.rds文件都是这样。)

GitHub Web界面确认您的文件在存储库上是可以的:

enter image description here

This question看起来很相关。安装Git LFS并运行git lfs pull后,我下载了完整文件(readRDS()似乎工作正常)。


0
投票

OP的罪魁祸首真是出乎意料,我也没有提供相关信息,因为我无法怀疑这是问题所在。

问题是这些文件是使用download.file(url, filePath, extra="L")自动下载的,在Windows中,这会导致二进制文件出现问题,而不是预期的问题。这就是为什么rds文件无法识别的原因。

[我在构建异常处理恢复代码时发现,该代码试图从Dropbox文件夹下载相同的文件,然后遇到相同的问题,因此不是因为Git LFS。

OP解决方案是添加参数download.file(..., mode="wb")

请参阅问题R trouble unzipping file under Windows

© www.soinside.com 2019 - 2024. All rights reserved.