web-dev-qa-db-ja.com

Rは、httpsサイトからデータを取得すると、「サポートされていないURLスキーム」エラーを生成します

Windows 8用のRバージョン3.0.1(2013-05-16)knitrバージョン1.5Rstudio 0.97.551

knitrを使用してRコードのマークダウンを行っています。分析の一環として、Webからさまざまなデータセットをダウンロードしました。knitrはhttpサイトからデータを取得するのにまったく問題ありませんが、httpsサイトからはunsupported URL schemeメッセージを生成します。 Macでdownload.file関数を使用する場合、httpsからデータを取得するにはmethodパラメーターをcurlに設定する必要がありますが、これはknitr

knitrがHttpsWebサイトからデータを収集するには、何をする必要がありますか?

編集:これはKnitrでエラーを返すコードチャンクですが、Rを実行するとエラーなしで機能します。

```{r}
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download.file(fileurl, destfile = "C:/Users/xxx/yyy")
```
11
Jonno Bourne

編集(2016年5月):R 3.3.0以降、download.file()はすべてのプラットフォームでSSLWebサイトを自動的に処理し、残りを作成する必要がありますこの答えの議論の余地があります。

あなたはこのようなものが欲しいです:

library(RCurl)
data <- getURL("https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv",
               ssl.verifypeer=0L, followlocation=1L)

これにより、データが単一の文字列としてメモリに読み込まれます。それでも、何らかの方法でデータセットに解析する必要があります。 1つの戦略は次のとおりです。

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

これはHTTPSURLから直接読み取り、data.frameを返します。

9
Thomas

「curl」をメソッドに次のように渡すことで、download.file()関数でhttpsを使用できます。

download.file(url,destination,method="curl")
20
Fabien Barbier

setInternet2(use = TRUE)関数を使用する前に、download.file()を使用してください。 Windows7で動作します。

setInternet2(use = TRUE)
download.file(url, destfile = "test.csv")
9
Renhuai

あなたはすでにあなたの問題の解決策をすでに見つけていると確信しています。

私は今課題に取り組んでいて、同じエラーが発生することになりました。私はいくつかのトリックを試しましたが、それは私にはうまくいきませんでした。たぶん私はWindowsマシンで作業しているからです。

とにかく、私はリンクをhttps:ではなくhttp:に変更しましたが、それでうまくいきました。

以下は私のコードのチャンクです:

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

お役に立てれば。

5
user3694373

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()):

Https:// URLは、-internet2または環境変数R_WIN_INTERNET2が設定されているか、setInternet2(TRUE)が使用されている場合(Internet Explorerの内部を利用するため)にのみサポートされ、証明書が有効であると見なされる場合にのみサポートされることに注意してください。

4
nbedou

次のコードがRで完全に実行され、htmlに編むときにunsupported URL schemeを取得するhttpsでも同じ問題が発生しました:

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」を削除しただけですべてがうまくいきました...

1
user2500444

R downloadパッケージを使用すると、ファイルのダウンロードに通常関連する風変わりな詳細が処理されます。あなたの例では、あなたがする必要があるのは:

```{r}
library(download)
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download(fileurl, destfile = "C:/Users/xxx/yyy")
```
0