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")
```
編集(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を返します。
「curl」をメソッドに次のように渡すことで、download.file()関数でhttpsを使用できます。
download.file(url,destination,method="curl")
setInternet2(use = TRUE)
関数を使用する前に、download.file()
を使用してください。 Windows7で動作します。
setInternet2(use = TRUE)
download.file(url, destfile = "test.csv")
あなたはすでにあなたの問題の解決策をすでに見つけていると確信しています。
私は今課題に取り組んでいて、同じエラーが発生することになりました。私はいくつかのトリックを試しましたが、それは私にはうまくいきませんでした。たぶん私は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')
お役に立てれば。
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の内部を利用するため)にのみサポートされ、証明書が有効であると見なされる場合にのみサポートされることに注意してください。
次のコードが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」を削除しただけですべてがうまくいきました...
R downloadパッケージを使用すると、ファイルのダウンロードに通常関連する風変わりな詳細が処理されます。あなたの例では、あなたがする必要があるのは:
```{r}
library(download)
fileurl <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
download(fileurl, destfile = "C:/Users/xxx/yyy")
```