11

适用于 Windows 8knitr版本 1.5 Rstudio 0.97.551的 R 版本 3.0.1 (2013-05-16)

knitr用来对我的 R 代码进行降价。作为我分析的一部分,我从网上下载了各种数据集,knitr完全可以从 http 站点获取数据,但从生成unsupported URL scheme消息的 https 站点获取数据。我知道在download.fileMac 上使用该函数时,必须将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")
```
4

7 回答 7

20

您可以通过将“curl”传递给方法来使用 https 和 download.file() 函数:

download.file(url,destination,method="curl")
于 2014-05-22T19:40:51.110 回答
9

在使用setInternet2(use = TRUE)该功能之前使用download.file()。它适用于 Windows 7。

setInternet2(use = TRUE)
download.file(url, destfile = "test.csv")
于 2014-06-03T05:28:08.550 回答
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。

于 2013-11-10T14:45:49.183 回答
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')

希望这可以帮助。

于 2014-08-21T20:27:13.927 回答
4

我在 Windows 8 上使用 https url 的 knitr 和 download.file() 遇到了同样的问题。

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,并且仅当证书被认为有效时才支持。

于 2013-11-15T14:30:14.470 回答
1

我在使用 https 时遇到了同样的问题,以下代码在 R 中完美运行并 unsupported URL scheme在编织到 html 时得到:

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"))

我尝试了这里发布的所有解决方案,但没有任何效果,在我绝对绝望的情况下,我只是删除了 url 中“https”中的“s”,一切都很好......

于 2014-06-09T20:13:49.603 回答
1

使用 R下载包处理通常与文件下载相关的古怪细节。例如,您需要做的就是:

```{r}
library(download)
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download(fileurl, destfile = "C:/Users/xxx/yyy")
```
于 2015-08-29T21:27:37.790 回答