leer - ingresar datos en r
ImportaciĆ³n de datos en R(rdata) desde Github (3)
Quiero poner algún código R más el archivo de datos asociado (RData) en Github.
Hasta ahora, todo funciona bien. Pero cuando las personas clonan el repositorio, quiero que puedan ejecutar el código de inmediato. Por el momento, esto no es posible porque tendrán que cambiar su directorio de trabajo (setwd) al directorio donde se clonó (es decir, descargar) el archivo RData.
Por lo tanto, pensé que podría ser más fácil si cambiara el código R de manera que vincule al archivo RData en github. Pero no puedo hacer que funcione con el siguiente fragmento. Creo que tal vez haya algún problema de texto / binario.
x <- RCurl::getURL("https://github.com/thefactmachine/hex-binning-gis-data/raw/master/popDensity.RData")
y <- load(x)
Cualquier ayuda sería apreciada.
Gracias
Esto funciona para mí:
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
EDITAR Respuesta al comentario OP.
De la documentación:
Tenga en cuenta que el esquema URL https: // no es compatible excepto en Windows.
Entonces podrías probar esto:
download.file(githubURL,"myfile")
load("myfile")
que también funciona para mí, pero esto desordenará su directorio de trabajo. Si eso no funciona, intente configurar method="curl"
en la llamada a download.file(...)
.
load
toma un nombre de archivo.
x <- getURL("https://github.com/thefactmachine/hex-binning-gis-data/raw/master/popDensity.RData")
writeLines(x, tmp <- tempfile())
y <- load(tmp)
También he tenido problemas con esto antes, y la solución que he encontrado más confiable es usar una pequeña modificación de source_url
del fantástico paquete [devtools] [1]. Esto funciona para mí (en una 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)
}
Utilizo una modificación muy similar para obtener archivos de texto de github usando read.table
, etc. Tenga en cuenta que necesita usar la versión "en bruto" de la URL de github (que incluyó en su pregunta).