通过HTTPS寻找R脚本

通过HTTPS寻找R脚本,r,R,有没有办法从web上获取R脚本 e、 g.源代码('http://github.com/project/R/file.r) 原因:我目前有一个项目,我想使用,但还没有准备好打包。因此,给人们提供一个单一的文件来从web上获取源文件将是一件非常棒的事情(这样就可以获取所有单独的函数文件) 仔细观察,问题似乎是https。我如何找到这个文件的来源 https://raw.github.com/hadley/stringr/master/R/c.r 是的,这是可能的,而且马上就为我工作了 R>

有没有办法从web上获取R脚本

e、 g.
源代码('http://github.com/project/R/file.r)

原因:我目前有一个项目,我想使用,但还没有准备好打包。因此,给人们提供一个单一的文件来从web上获取源文件将是一件非常棒的事情(这样就可以获取所有单独的函数文件)

仔细观察,问题似乎是https。我如何找到这个文件的来源

https://raw.github.com/hadley/stringr/master/R/c.r

是的,这是可能的,而且马上就为我工作了

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

关于HTTPS部分,内部R代码不支持它。但是,R可以使用外部实用程序,如
wget
curl
来获取https://url。需要编写额外的代码才能
source
文件

示例代码可能如下所示:

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

wget.and.source是的,您可以尝试运行此R教程:

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

只有在Windows上,当R使用
--internet2
命令行选项启动时,才支持Https(请参阅):

如果没有此选项,或者在linux上,您将得到错误“unsupported URL scheme”。在这种情况下,采用@ulidtko建议的解决方案,或:

下面是一种使用同样支持https的RCurl实现的方法:

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

(如果ssl证书有效,您可以删除
ssl.verifypeer

您可以使用devtools库中的源url

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

Windows提供的RCurl方法的包装: 如果Internet Explorer配置为使用组织的代理访问web,则可以指示R使用这些IE设置,而不是默认的R设置。此更改可通过以下步骤进行一次:

  • 保存您的工作并关闭您可能已打开的所有R会话

  • 编辑以下文件。(注意:您的确切路径将根据您的R安装而有所不同)

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

  • 在记事本中打开此“Rprofile.site”文件,并在文件末尾的新行中添加以下行:

    utils::setInternet2(TRUE)
    
    您现在可以打开一个新的R会话,然后重试“source”命令

    Linux类: 使用G.Grothendieck的建议。在R中的命令提示下,键入:

    source(pipe(paste("wget -O -", "https://github.com/enter/your/url/here.r")))
    
    您可能会得到一个错误,说明:

    cannot verify certificate - - - - Self-signed certificate encountered.
    
    此时,由您决定是否信任签发自签名证书的人员并继续或停止

    如果决定继续,您可以按如下方式进行不安全连接:

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

    有关详细信息,请参阅以下内容:

    参见第2.19节

    类似问题如下:


    这里的方法给了我来自github的以下错误:

    OpenSSL: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
    
    我使用以下函数来解决它:

    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'))
    
    github.download=函数(url){
    
    fname这在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))
    
    库(RCurl)
    #从github加载函数和脚本----------------------------
    
    fn1 Uhm…是吗?你尝试过这样做吗?发生了什么事?谢谢你编辑标题。你的系统和R版本是什么?我得到“不支持的URI方案”错误。奇怪…我在Windows 7 x64上用R 2.13.1 x64和2.13.2 x64进行了尝试。在控制台模式下(R.exe)它不适用于这两种情况,在Rgui中仅适用于2.13.1,在RStudio中2.13.2作为控制台也适用。我使用(.packages())进行了检查,始终只加载这7个:“stats”/“graphics”/“grDevices”/“utils”/“dataset”/“methods”/“base”找到了解决方案:如果R是以选项--internet2从https寻源工作开始的,请参阅简短更新:选项--internet2仅适用于windows。在Linux下从https寻源不工作(已测试),因此您需要一个类似于ulidtko的解决方案。感谢您继续挖掘直到找到解决方案。您能否更新您的答案以反映您的发现:关于
    --internet2
    选项?使用
    wget
    实用程序也可以这样做:
    源代码(管道(粘贴(“wget-O-”,URL)))
    .devtools在R:devtools::source\u gist('11326436')中也能很好地处理gist。utils::setInternet2(TRUE)现在已经失效
    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))