2014-07-20 67 views
6

我想在Github上放一些R代码和相关的数据文件(RData)。从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) 

任何帮助,将不胜感激。

感谢

回答

0

load一个文件名。

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

感谢发布。我尝试了上述解决方案,但收到以下消息。我尝试了几个不同的文件。错误:坏恢复文件幻数(文件可能已损坏) - 没有数据加载 此外:警告消息: 文件'filef00b79947a46'有幻数'' 使用2之前的保存版本已被弃用 – markthekoala

5

这个工作对我来说:

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评论。

从文档:

Note that the https:// URL scheme is not supported except on Windows.

所以,你可以试试这个:

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

这对我来说也有效,但是这会弄乱你的工作目录。如果这不起作用,请尝试在拨打download.file(...)的电话中设置method="curl"

+0

感谢发布。当我尝试上面的代码时收到以下错误消息:加载时出错(url(githubURL)):无法打开我正在使用R Studio的连接。 – markthekoala

+0

我认为问题在于使用'https'。查看我的编辑可能的工作原理 - 很难知道,因为所有这些工作都在我的系统上运行。如果您只是将网址更改为“http:// ...”,会发生什么情况?这也适用于我。 – jlhoward

0

我之前也遇到过这个问题,而且我发现最可靠的解决方案是使用来自梦幻般的[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