直接在R中下载和解压缩GitHub压缩文件



我正在尝试从GitHub下载一个文件文件夹并将其解压缩到R中。我可以在https://github.com/dylangomes/SO/blob/main/Shape.zip然后提取工作目录中的所有文件,但我想直接从R.中工作

utils::unzip("https://github.com/dylangomes/SO/blob/main/Shape.zip")
# Warning message:
# In utils::unzip("https://github.com/dylangomes/SO/blob/main/Shape.zip",  :
#  error 1 in extracting from zip file    

它说这是一条警告信息,尽管没有任何东西被下载或解压到我的单词中。

可以将文件下载到我的机器:

utils::download.file("https://github.com/dylangomes/SO/blob/main/Shape.zip")

但我在unzip函数中得到了相同的消息:

utils::unzip("Shape.zip")

并且无法手动提取下载的文件。在这里,我得到了压缩文件夹为空的错误。unzip行用于手动下载的.zip文件,这告诉我download.file行有问题。

因此,如果我在末尾添加raw=TRUE(这会对从GitHub下载数据产生影响(:

utils::download.file("https://github.com/dylangomes/SO/blob/main/Shape.zip?raw=TRUE","Shape.zip")
utils::unzip("Shape.zip")

我收到了一个不同的警告,类似地,没有执行任何操作:

Warning message:
In utils::unzip("Shape.zip") : internal error in 'unz' code

我已经尝试过使用R下载压缩数据文件、提取和导入数据的大多数答案,但它们似乎是针对压缩的单个文件,在这里没有帮助。我在从zip文件中提取时尝试了r函数unzip错误1的答案,其中提到了我收到的相同警告消息,但在这种情况下,所有解决方案都不起作用。

你知道我做错了什么吗?

您需要使用:

download.file(
"https://github.com/dylangomes/SO/blob/main/Shape.zip?raw=TRUE",
"Shape.zip",
mode = "wb"
)

如果没有查询字符串?raw=TRUE,您下载的是网页,而不是文件。

(对于Windows(R从URL末尾检测到正在下载某些文件格式(包括.zip(时,默认情况下将使用mode = "wb"。但是,URL以查询字符串而不是文件格式结束意味着检查失败,因此需要显式设置模式。

最新更新