我试图采用可重复研究范例,但会遇到喜欢查看Excel而不是文本数据文件的人,使用Dropbox托管Excel文件,然后我可以使用.xlsx软件包访问这些文件。
就像下载和解压缩压缩文件一样,我假设以下内容会起作用:
# Prerequisites
require("xlsx")
require("ggplot2")
require("repmis")
require("devtools")
require("RCurl")
# Downloading data from Dropbox location
link <- paste0(
"https://www.dropbox.com/s/",
"{THE SHA-1 KEY}",
"{THE FILE NAME}"
)
url <- getURL(link)
temp <- tempfile()
download.file(url, temp)
但是,我得到Error in download.file(url, temp) : unsupported URL scheme
是否有替代download.file接受此URL方案? 谢谢, 乔恩
答案 0 :(得分:0)
您的网址错误 - 您正在使用的网址只会转到目标网页。我认为实际的下载URL是不同的,我设法使用下面的工作。
我实际上认为你不需要使用RCurl或getURL()
函数,我认为你在之前的公式中遗漏了一些相对重要的/
。
尝试以下方法:
link <- paste("https://dl.dropboxusercontent.com/s",
"{THE SHA-1 KEY}",
"{THE FILE NAME}",
sep="/")
download.file(url=link,destfile="your.destination.xlsx")
closeAllConnections()
答案 1 :(得分:0)
我刚刚意识到repmis
package中有一个source_XlsxData
函数,理论上应该完美地完成这项工作。
此外,下面的功能在某些时候有效,但在其他时候没有,并且似乎卡在GET线上。因此,非常欢迎更好的解决方案。
我决定退后一步,弄清楚如何从安全(https)网址下载原始文件。我在devtools中修改了(butchered?)source_url函数以生成以下内容:
download_file_url <- function (
url,
outfile,
..., sha1 = NULL)
{
require(RCurl)
require(devtools)
require(repmis)
require(httr)
require(digest)
stopifnot(is.character(url), length(url) == 1)
filetag <- file(outfile, "wb")
request <- GET(url)
stop_for_status(request)
writeBin(content(request, type = "raw"), filetag)
close(filetag)
}
这似乎适用于生成本地版本的二进制文件 - 包括Excel。更好,更整洁,更聪明的改进,感激不尽。