mexico r google-docs google-docs-api google-drive-sdk

mexico - maps package r



Código R en Google Docs (4)

Es más fácil de hacer con Dropbox - ver aquí http://thebiobucket.blogspot.co.at/2012/05/source-r-script-from-dropbox.html

al igual que:

source("http://dl.dropbox.com/s/c18lcwnnrodsevt/test_dropbox_source.R")

Pero puede hacerlo con Googledocs, como aquí http://thebiobucket.blogspot.co.at/2011/11/how-to-run-r-scripts-directly-out-of.html#more

library(RCurl) setwd(tempdir()) destfile = "test_google_docs.txt" x = getBinaryURL("https://docs.google.com/uc?export=download&id=0B2wAunwURQNsMDViYzllMTMtNjllZS00ZTc4LTgzMzEtNDFjMWQ3MTUzYTRk", followlocation = TRUE, ssl.verifypeer = FALSE) writeBin(x, destfile, useBytes = TRUE) source(paste(tempdir(), "/test_google_docs.txt", sep = ""))

Soy consciente de que puedes publicar hojas de cálculo en Google Docs y luego importarlas en R. Sin embargo, digamos que tengo una función o código que quiero leer en R (como en la función fuente). ¿Cómo leerías, por ejemplo, todo este código almacenado en documentos de Google?

https://docs.google.com/document/edit?id=1f11rcVs9AtVcgOyiP0lV04yq9hshVDIPx93lA0ItFvQ

No creo que esto haya sido publicado, pero es solo para dar un ejemplo.

Básicamente quiero:

  1. Cree una función en R (para comparabilidad, vea el ejemplo a continuación)

  2. Cargarlo en Google Docs y compartirlo con cualquier persona con el enlace para que no tenga que iniciar sesión a través de R o Google Docs, etc ...

  3. Léelo a través de un comando como source () donde quiera

Mi interés no es leer datos, sino funciones de lectura. Haría que importar mis propias funciones mucho más rápido cuando no estoy en la misma computadora / servidor.

¿Algunas ideas?

Muchas gracias

PS Ejemplo de una función de statsmethods.net

mysummary <- function(x,npar=TRUE,print=TRUE) { if (!npar) { center <- mean(x); spread <- sd(x) } else { center <- median(x); spread <- mad(x) } if (print & !npar) { cat("Mean=", center, "/n", "SD=", spread, "/n") } else if (print & npar) { cat("Median=", center, "/n", "MAD=", spread, "/n") } result <- list(center=center,spread=spread) return(result) }


Hay un paquete RGoogleDocs que admite la carga y descarga de archivos. Una vez que se haya descargado el archivo, puede usar la source para leerlo.


Sugeriría Github o algo similar para este tipo de situación.

Algunas de las razones para recomendar a Github:

  • Control de versiones
  • Código resaltado
  • Colaboración
  • Posibilidad de desarrollar y alojar un paquete R en Github que otros pueden instalar en R usando el paquete devtools
  • Esquema de URL simple que facilita el uso de la source() para cargar funciones

Una vez que haya publicado su función en Github, puede cargarla fácilmente de la siguiente manera:

require(RCurl) baseURL = c("https://raw.github.com/--username--/--repo-name--/master/") source(textConnection(getURL(paste0(baseURL, "path-to-scripts/script-name.R"))))

Por supuesto, puede ajustarlo fácilmente en una función en lugar de tener que escribirlo en cada sesión R o probar algunas de las opciones en el paquete devtools .

Si haces esto mucho, tal vez quieras aprender a hacer un paquete R y alojarlo en Github. Si solo necesita hacer esto de vez en cuando, puede considerar usar "github: gist" en su lugar. A cada "esencia" se le asigna una identificación numérica que luego puede obtenerse fácilmente utilizando source_gist() del paquete devtools siguiente manera:

source_gist("gist-id-number")

Es bastante difícil de superar, pero tienes que anotar los números de identificación para tus funciones, o poner todas tus funciones en un solo archivo y memorizar un número de ID ...

La razón por la que no recomendaría algo como Google Docs para escribir su código es que generalmente es una idea terrible usar un software tipo "procesador de textos" para fines tales como introducir caracteres ocultos que dificultarían la fuente de su archivo. Además, la URL de la versión de texto plano es muy oscura y no podrás recordarla ...

A propósito, es posible obtener la versión "txt" del archivo al que se ha vinculado en su publicación, pero no puedo acceder a la source() - Tengo que abrirlo en un editor de texto y copiar y pegar en R. Esto se debe a la codificación del archivo que parece ser "UTF-8 (con BOM)". ¿Alguien tiene consejos sobre cómo lidiar con eso?


También creo que la mejor manera es usar github o dropbox. Pero usando los paquetes de RGoogleDocs y XML podemos analizar el código (no tengo mucha experiencia) con el análisis XML puede ser que alguien tenga un mejor código.

### require(devtools);dev_mode(TRUE, .libPaths()[1]);install_github("RGoogleDocs", "duncantl") require(RGoogleDocs) require(XML) auth <- getGoogleAuth("[email protected]", "*********") con <- getGoogleDocsConnection(auth) mydoc <- getDocs(con) ## I put star for confidentiality ## Your doc is in 10th position names(mydoc) ## [1] "*********" ## [2] "*********" ## [3] "panel_tp_transferts" ## [4] "txint" ## [5] "avortementsuivisen" ## [6] "Untitled Document" ## [7] "copie de villages_emprise10km" ## [8] "AéroportBlaiseDiagne_AFDB.pdf" ## [9] "strassen_eng.pdf" ## [10] "R_script_CO2_emissions_airborne" rcode <- mydoc[[10]] rcode <- getDocContent(rcode, con) ## remove Non break space in the document (there are plenty of them...) rcode <- gsub("&nbsp;", " ", rcode) rcode <- htmlParse(rcode, asText = TRUE) rcodecontent <- xpathApply(rcode, "/html//body//p//span") rcodecontent <- sapply(rcodecontent, function(x) unname(xmlSApply(x, xmlValue))

Ahora podemos guardar el código en un archivo

### save the script in my dropbox folder (dropbox is very easy to use...) cat(sapply(rcodecontent, function(x) paste(x, "/n")), file = "/home/ahmadou/Dropbox/Public/code.R") ### retrieve the public link oldwd <- getwd() setwd("/home/ahmadou/Dropbox/Public") system(''dropbox puburl code.R'', intern = TRUE) [1] "https://dl.dropbox.com/u/8750577/code.R" setwd(oldw)

Aquí está el enlace para el código