繁体   English   中英

从 Github 导入数据到 R (rdata)

[英]Importing data into R (rdata) from Github

我想在 Github 上放一些 R 代码和相关的数据文件 (RData)。

到目前为止,一切正常。 但是当人们克隆存储库时,我希望他们能够立即运行代码。 目前,这是不可能的,因为他们必须将他们的工作目录 (setwd) 更改为 RData 文件被克隆(即下载)到的目录。

因此,我认为如果我更改 R 代码使其链接到 github 上的 RData 文件,这可能会更容易。 但是我无法使用以下代码段使其正常工作。 我认为可能存在一些问题文本/二进制问题。

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

任何帮助,将不胜感激。

谢谢

这对我有用:

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"

我以前也遇到过这个问题,我发现最可靠的解决方案是使用来自奇妙的 [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)
}

我使用了一个非常相似的修改来使用read.table等从 github 获取文本文件。请注意,您需要使用 github URL 的“原始”版本(您包含在您的问题中)。

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

load需要一个文件名。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM