Sourcing R script sobre HTTPS

¿Hay alguna forma de obtener un script R desde la web?

por ejemplo, source('http://github.com/project/R/file.r')

Motivo: Actualmente tengo un proyecto que me gustaría poner a disposición para su uso, pero aún no está listo para ser empacado. Por lo tanto, sería genial darles a las personas un único archivo para que procedan de la web (que luego se encargará de todos los archivos de funciones individuales).

En una inspección más cercana, el problema parece ser https. ¿Cómo puedo obtener este archivo?

 https://raw.github.com/hadley/stringr/master/R/cr 

Sí, puedes, intenta ejecutar este tutorial en R:

 source("http://www.mayin.org/ajayshah/KB/R/tutorial.R") 

( Fuente )

Https solo se admite en Windows, cuando R se inicia con la opción de línea de comando --internet2 (consulte las preguntas frecuentes ):

 > source("https://pastebin.com/raw.php?i=zdBYP5Ft") > test() [1] "passed" 

Sin esta opción, o en Linux, obtendrá el error “esquema de URL no soportado”. En ese caso, recurra a la solución sugerida por @ulidtko , o:

Aquí hay una manera de hacerlo usando RCurl , que también es compatible con https:

  library(RCurl) eval( expr = parse( text = getURL("http://www.mayin.org/ajayshah/KB/R/tutorial.R", ssl.verifypeer=FALSE) )) 

(Puede eliminar el ssl.verifypeer si el certificado ssl es válido)

Puede usar source_url en la biblioteca devtools

 library(devtools) source_url('https://raw.github.com/hadley/stringr/master/R/c.r') 

Este es un contenedor para el método RCurl de @ROLO

Sí, es posible y funcionó para mí de inmediato.

 R> source("http://pastebin.com/raw.php?i=zdBYP5Ft") R> test() [1] "passed" 

En cuanto a la parte HTTPS, no es compatible con el código R interno. Sin embargo, R puede usar utilidades externas como wget o curl para buscar https: // URLs. Será necesario escribir un código adicional para poder source los archivos.

El código de ejemplo podría ser así:

 wget.and.source <- function(url) { fname <- tempfile() download.file(url, fname, method="wget") source(fname) unlink(fname) } 

También hay una solución de solo Windows: inicie R con la opción de línea de comando de --internet2 . Esto cambiará todo el código de Internet en R para usar IE, y consecuentemente HTTPS funcionará.

Windows:

Si Internet Explorer está configurado para acceder a la web utilizando el proxy de su organización, puede indicar a R que use estos ajustes de IE en lugar de la configuración R predeterminada. Este cambio se puede hacer una vez mediante los siguientes pasos:

  1. Guarde su trabajo y cierre todas las sesiones R que pueda tener abiertas.
  2. Edite el siguiente archivo. (Nota: su ruta exacta será diferente en función de su instalación R)

    C: \ Archivos de progtwig \ R \ R-2.15.2 \ etc \ Rprofile.site

Abra este archivo “Rprofile.site” en el Bloc de notas y agregue la siguiente línea en una nueva línea al final del archivo:

 utils::setInternet2(TRUE) 

Ahora puede abrir una nueva sesión R y volver a intentar su comando “fuente”.

Alike de Linux:

Use la sugerencia de G. Grothendieck. En el símbolo del sistema dentro del tipo R:

 source(pipe(paste("wget -O -", "https://github.com/enter/your/url/here.r"))) 

Puede recibir un mensaje de error que diga:

 cannot verify certificate - - - - Self-signed certificate encountered. 

En este punto, depende de usted decidir si confía en la persona que emite el certificado autofirmado y continuar o detenerse.

Si decide continuar, puede conectarse inseguramente de la siguiente manera:

 source(pipe(paste("wget -O -", "https://github.com/enter/your/url.r", "--no-check-certificate"))) 

Para más detalles, mira lo siguiente:

Ver la sección 2.19

  • CRAN R Documentation 2.19
  • wget documentación sección 2.8 para “no-check-certificate”

Preguntas similares aquí:

  • Stackoverflow setInternet2 discusión
  • Discusión sobre la configuración del Proxy Stackoverflow

Los métodos aquí me daban el siguiente error de github:

 OpenSSL: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112) 

Usé la siguiente función para resolverlo:

 github.download = function(url) { fname <- tempfile() system(sprintf("curl -3 %s > %s", url, fname)) return(fname) } source(github.download('http://github.com/project/R/file.r')) 

¡Espero que ayude!

Esto funciona para mí en Windows:

 library(RCurl) # load functions and scripts from github ---------------------------- fn1 <- getURL("https://raw.githubusercontent.com/SanjitNarwekar/Advanced-R-Programming/master/fn_factorial_loop.R", ssl.verifypeer = FALSE) eval(parse(text = fn1))