型変換 GithubからR(rdata)にデータをインポートする



solutions to r for data science (3)

これは私のために働く:

githubURL <- "https://github.com/thefactmachine/hex-binning-gis-data/raw/master/popDensity.RData"
load(url(githubURL))
head(df)
#          X        Y        Z
# 1 16602794 -4183983 94.92019
# 2 16602814 -4183983 91.15794
# 3 16602834 -4183983 87.44995
# 4 16602854 -4183983 83.79617
# 5 16602874 -4183983 80.19643
# 6 16602894 -4183983 76.65052

OPコメントへの応答を編集します。

ドキュメントから:

Windows以外の場合、https:// URLスキームはサポートされていないことに注意してください。

だからあなたはこれを試すことができます:

download.file(githubURL,"myfile")
load("myfile")

これも私のために働くが、これは作業ディレクトリを乱雑にする。 それでも解決しない場合は、 download.file(...)呼び出しでmethod="curl"設定してみてください。

GithubにRコードとそれに関連するデータファイル(RData)を追加したいと思います。

これまでのところ、すべて正常に動作します。 しかし、人々がリポジトリをクローンするときに、コードをすぐに実行できるようにしたい。 現時点では、RDataファイルが複製された(つまりダウンロードされた)ディレクトリに作業ディレクトリ(setwd)を変更する必要があるため、これは不可能です。

したがって、RコードをgithubのRDataファイルにリンクするように変更した方が簡単かもしれません。 しかし、私は次のスニペットを使用してこれを動作させることはできません。 私はおそらくいくつかの問題テキスト/バイナリの問題があると思う。

x <- RCurl::getURL("https://github.com/thefactmachine/hex-binning-gis-data/raw/master/popDensity.RData")
y <- load(x)

どんな助けもありがとう。

ありがとう


Answer #1

loadはファイル名をとります。

x <- getURL("https://github.com/thefactmachine/hex-binning-gis-data/raw/master/popDensity.RData")
writeLines(x, tmp <- tempfile())
y <- load(tmp)

Answer #2

私もこれまでに問題がありました。私が最も信頼できると分かった解決策は、素晴らしい[devtools] [1]パッケージのsource_url小さな変更を使用することです。 これは私のために働く(Macで)。

load_url <- function (url, ..., sha1 = NULL) {
  # based very closely on code for devtools::source_url
  stopifnot(is.character(url), length(url) == 1)
  temp_file <- tempfile()
  on.exit(unlink(temp_file))
  request <- httr::GET(url)
  httr::stop_for_status(request)
  writeBin(httr::content(request, type = "raw"), temp_file)
  file_sha1 <- digest::digest(file = temp_file, algo = "sha1")
  if (is.null(sha1)) {
    message("SHA-1 hash of file is ", file_sha1)
  }
  else {
    if (nchar(sha1) < 6) {
      stop("Supplied SHA-1 hash is too short (must be at least 6 characters)")
    }
    file_sha1 <- substr(file_sha1, 1, nchar(sha1))
    if (!identical(file_sha1, sha1)) {
      stop("SHA-1 hash of downloaded file (", file_sha1, 
           ")\n  does not match expected value (", sha1, 
           ")", call. = FALSE)
    }
  }
  load(temp_file, envir = .GlobalEnv)
}

私はgithubからread.tableなどを使ってテキストファイルを取得するのに非常によく似た修正をしています。github URLの "未加工"バージョン(あなたの質問に含まれています)を使う必要があることに注意してください。

[1] https://github.com/hadley/devtoolspackage





rdata