[我试图使我的代码可移植到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中可以完美运行...
问题似乎出在下载 /从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界面确认您的文件在存储库上是可以的:
This question看起来很相关。安装Git LFS并运行git lfs pull
后,我下载了完整文件(readRDS()
似乎工作正常)。
OP的罪魁祸首真是出乎意料,我也没有提供相关信息,因为我无法怀疑这是问题所在。
问题是这些文件是使用download.file(url, filePath, extra="L")
自动下载的,在Windows中,这会导致二进制文件出现问题,而不是预期的问题。这就是为什么rds文件无法识别的原因。
[我在构建异常处理恢复代码时发现,该代码试图从Dropbox文件夹下载相同的文件,然后遇到相同的问题,因此不是因为Git LFS。
OP解决方案是添加参数download.file(..., mode="wb")
。