Sourcing R script over HTTPS

前端 未结 6 1632
盖世英雄少女心
盖世英雄少女心 2020-11-30 05:52

Is there some way to source an R script from the web?

e.g. source(\'http://github.com/project/R/file.r\')

Reason: I currently have a project tha

相关标签:
6条回答
  • 2020-11-30 06:11

    Windows:

    If Internet Explorer is configured to access the web using your organization's proxy, you can direct R to use these IE settings instead of the default R settings. This change can be made once by the following steps:

    1. Save your work and close all R sessions you may have open.

    2. Edit the following file. (Note: Your exact path will differ based on your R installation)

      C:\Program Files\R\R-2.15.2\etc\Rprofile.site

    Open this "Rprofile.site" file in Notepad and add the following line on a new line at the end of the file:

    utils::setInternet2(TRUE)
    

    You may now open a new R session and retry your "source" command.

    Linux alikes:

    Use G. Grothendieck's suggestion. At the command prompt within R type:

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

    You may get an error saying:

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

    At this point it is up to you to decide whether you trust the person issuing the self-signed certificate and proceed or to stop.

    If you decide to proceed, you can connect insecurely as follows:

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

    For more details, see the following:

    See section 2.19

    • CRAN R Documentation 2.19
    • wget documentation section 2.8 for "no-check-certificate"

    Similar questions here:

    • Stackoverflow setInternet2 discussion
    • Stackoverflow Proxy configuration discussion
    0 讨论(0)
  • 2020-11-30 06:12

    You can use the source_url in the devtools library

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

    This is a wrapper for the RCurl method by @ROLO

    0 讨论(0)
  • 2020-11-30 06:16

    This is working for me on 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))
    
    0 讨论(0)
  • 2020-11-30 06:21

    Yes you can, try running this R tutorial:

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

    (Source)

    Https is only supported on Windows, when R is started with the --internet2 command line option (see FAQ):

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

    Without this option, or on linux, you will get the error "unsupported URL scheme". In that case resort to the solution suggested by @ulidtko, or:

    Here is a way to do it using RCurl, which also supports https:

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

    (You can remove the ssl.verifypeer if the ssl certificate is valid)

    0 讨论(0)
  • 2020-11-30 06:29

    Yes, it is possible and worked for me right away.

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

    Regarding the HTTPS part, it isn't supported by internal R code. However, R can use external utilities like wget or curl to fetch https:// URLs. One will need to write additional code to be able to source the files.

    Sample code might be like this:

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

    There is a Windows-only solution too: start R with --internet2 commandline option. This will switch all the internet code in R to using IE, and consequently HTTPS will work.

    0 讨论(0)
  • 2020-11-30 06:32

    The methods here were giving me the following error from github:

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

    I used the following function to resolve it:

    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'))
    

    Hope that helps!

    0 讨论(0)
提交回复
热议问题