适用于Windows 8的R版本3.0.1(2013-05-16)knitr
版本1.5 Rstudio 0.97.551
我使用knitr
来做我的R代码的降价。
作为我分析的一部分,我从网上下载了各种数据集,knitr
完全可以从http网站获取数据,但是从https网站获取数据,生成unsupported URL scheme
消息。
我知道在Mac上使用download.file
函数时,必须将method
参数设置为curl
才能从https获取数据,但这在使用knitr
时无效
我需要做什么才能knitr
从Https网站收集数据?
编辑: 这是在Knitr中返回错误的代码块,但是当通过R运行时没有错误。
```{r}
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download.file(fileurl, destfile = "C:/Users/xxx/yyy")
```
答案 0 :(得分:20)
您可以将https与download.file()函数一起使用,方法是将“curl”传递给方法:
download.file(url,destination,method="curl")
答案 1 :(得分:9)
编辑(2016年5月):从R 3.3.0开始,download.file()
应该在所有平台上自动处理SSL网站,这使得其余的答案都没有用。
你想要这样的东西:
library(RCurl)
data <- getURL("https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv",
ssl.verifypeer=0L, followlocation=1L)
将数据作为单个字符串读入内存。您仍然需要以某种方式将其解析为数据集。一个策略是:
writeLines(data,'temp.csv')
read.csv('temp.csv')
您也可以直接分离数据而无需写入文件:
read.csv(text=data)
编辑:更容易的选择实际上是使用 rio 包:
library("rio")
import("https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv")
这将直接从HTTPS URL读取并返回data.frame。
答案 2 :(得分:9)
在使用setInternet2(use = TRUE)
功能之前使用download.file()
。它适用于Windows 7.
setInternet2(use = TRUE)
download.file(url, destfile = "test.csv")
答案 3 :(得分:5)
我相信你现在已经找到了问题的解决方案。
我现在正在完成一项任务,最终得到同样的错误。我尝试了一些技巧,但这对我不起作用。也许是因为我在Windows机器上工作。
无论如何,我将链接更改为http:而不是https:这就是诀窍。
以下是我的代码块:
if (!file.exists("./PeerAssesment2")) {dir.create("./PeerAssessment2")}
fileURL <- "http://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2"
download.file(fileURL, dest = "./PeerAssessment2/Data.zip")
install.packages("R.utils")
library(R.utils)
if (!file.exists("./PeerAssessment2/Data")) {
bunzip2 ("./PeerAssessment2/Data.zip", destname = "./PeerAssessment2/Data")
}
list.files("./PeerAssessment2")
noaaData <- read.csv ('./PeerAssessment2/Data')
希望这会有所帮助。
答案 4 :(得分:4)
我在Windows 8上遇到了与knitr和download.file()以及https网址相同的问题。
您可以在使用setInternet2(TRUE)
功能之前尝试download.file()
。但是我不确定这个修复程序是否适用于类Unix系统。
setInternet2(TRUE) # set the R_WIN_INTERNET2 to TRUE
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download.file(fileurl, destfile = "C:/Users/xxx/yyy") # now it should work
来源: R文档(?download.file()
):
请注意,仅当设置了--internet2或环境变量R_WIN_INTERNET2或使用了setInternet2(TRUE)(以使用Internet Explorer内部)时才支持https:// URL,并且仅当证书被认为是有效的。
答案 5 :(得分:1)
我遇到了同样的问题,https使用以下代码在R中完美运行并在编织为html时获得unsupported URL scheme
:
temp = tempfile()
download.file("https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2Factivity.zip", temp)
data = read.csv(unz(temp, "activity.csv"), colClasses = c("numeric", "Date", "numeric"))
我尝试了所有在这里发布的解决方案,没有任何效果,在绝对的绝望中,我刚刚删除了网址中“https”中的“s”,一切都很好......
答案 6 :(得分:0)
使用R 下载包可以处理通常与文件下载相关的奇怪细节。举个例子,你需要做的就是:
```{r}
library(download)
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download(fileurl, destfile = "C:/Users/xxx/yyy")
```