Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌文档上的R代码_R_Google Docs_Google Docs Api_Google Drive Api - Fatal编程技术网

谷歌文档上的R代码

谷歌文档上的R代码,r,google-docs,google-docs-api,google-drive-api,R,Google Docs,Google Docs Api,Google Drive Api,我知道你可以在Google文档上发布电子表格,然后在R中导入它们。但是,假设我有一个函数或一些代码,我想在R中阅读(比如在源函数中)。例如,您将如何读入存储在google文档中的所有这些代码 我不认为这已经出版,但它只是给一个例子 基本上我想: 在R中创建一个函数(有关可比性,请参见下面的示例) 上传到谷歌文档上,并与任何有链接的人共享,这样我就不必通过R或谷歌文档等登录 无论我想在哪里,都可以通过像source()这样的命令读入它 我的兴趣不是读取数据,而是读取函数。当我不在同一台计算机/服

我知道你可以在Google文档上发布电子表格,然后在R中导入它们。但是,假设我有一个函数或一些代码,我想在R中阅读(比如在源函数中)。例如,您将如何读入存储在google文档中的所有这些代码

我不认为这已经出版,但它只是给一个例子

基本上我想:

  • 在R中创建一个函数(有关可比性,请参见下面的示例)

  • 上传到谷歌文档上,并与任何有链接的人共享,这样我就不必通过R或谷歌文档等登录

  • 无论我想在哪里,都可以通过像source()这样的命令读入它

  • 我的兴趣不是读取数据,而是读取函数。当我不在同一台计算机/服务器上时,它将使导入我自己的函数更快

    有什么想法吗

    非常感谢

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

    mysummary对于这种情况,我建议使用Github或类似的工具

    推荐Github的原因如下:

    • 版本控制
    • 代码突出显示
    • 协作
    • 能够在Github上开发和托管R包,其他人可以使用
      devtools
      包在R中安装
    • 简单的URL方案,可轻松使用
      source()
      加载函数
    将函数发布到Github后,您可以按如下方式轻松加载它:

    require(RCurl)
    baseURL = c("https://raw.github.com/--username--/--repo-name--/master/")
    source(textConnection(getURL(paste0(baseURL, "path-to-scripts/script-name.R"))))
    
    source_gist("gist-id-number")
    
    当然,您可以轻松地将其包装到函数中,而不必在每个R会话中键入它,或者尝试
    devtools
    包中的一些选项

    如果您经常这样做,您可能希望学习制作一个R包并将其托管在Github上。如果你只需要偶尔做一次,你可以考虑使用“GITHUB:GIST”。每个“gist”都分配了一个数字ID,然后可以使用
    source\u gist()
    devtools
    包中轻松获取该ID,如下所示:

    require(RCurl)
    baseURL = c("https://raw.github.com/--username--/--repo-name--/master/")
    source(textConnection(getURL(paste0(baseURL, "path-to-scripts/script-name.R"))))
    
    source_gist("gist-id-number")
    
    很难做到这一点,但是你必须记下你函数的ID号,或者把你所有的函数放在一个文件中,记住一个ID号


    我不推荐像Google Docs这样的东西来编写代码的原因是,使用“文字处理器”类型的软件来编写代码通常是一个糟糕的主意,因为它们可能会引入隐藏字符,从而使您的文件难以获取源代码。此外,纯文本版本的URL是一个非常模糊的URL,您将无法记住


    顺便说一句,您可以在帖子中获取链接到的文件的“txt”版本,但我无法
    source()
    它--我必须在文本编辑器中打开它,并将其复制粘贴到R中。这是因为文件编码似乎是“UTF-8(带BOM)”。任何人都有如何处理这个问题的技巧吗?

    有一个支持上传和下载文件的软件包。下载文件后,您可以使用
    source
    阅读它。

    我还认为最好的方法是使用github或dropbox。但是使用
    RGoogleDocs
    XML
    包,我们可以用XML解析代码(我不是很有经验),也许有人会有更好的代码

    ### require(devtools);dev_mode(TRUE, .libPaths()[1]);install_github("RGoogleDocs", "duncantl")
    require(RGoogleDocs) 
    require(XML)
    
    auth <- getGoogleAuth("dicko.ahmadou@gmail.com", "*********")
    
    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))
    
    ###require(devtools);dev_模式(TRUE,.libpath()[1]);安装github(“RGoogleDocs”、“duncantl”)
    需要(RGoogleDocs)
    需要(XML)
    
    auth使用Dropbox最容易完成-请参见此处

    像这样:

    source("http://dl.dropbox.com/s/c18lcwnnrodsevt/test_dropbox_source.R")
    
    但你也可以用谷歌文档,比如这里


    你为什么要用谷歌文档来做这个?在我看来,更好的解决方案是Github或Dropbox。顺便说一句,如果不做一些修改,粘贴到问题顶部的Google文档文件中的函数将无法工作。我不确定这个脚本是什么时候写的,但它一定是在谷歌文档制作所有的
    https
    之前。这样的URL不再容易在R中加载(但仍然完全可能)。谷歌文档不是被迁移到谷歌驱动器吗?如果你真的想和所有的东西一起去谷歌(有时我喜欢它们,其他时候,我不这样做),你可以考虑谷歌站点,然后把你的R脚本作为纯文本附件上传到帖子中。但老实说,我不认为这是最好的方式……有人(Mason Simon)现在创建了“source.gist”包,可在CRAN上获得。@adiffertben,“source.gist”包有点过时,我认为它与Hadley在API更改方面遇到的问题相同<虽然“devtools”软件包中有code>source\u-gist
    ,但它应该能按预期工作。我认为在这种情况下,您不能简单地使用
    source()
    ,可以吗?我不确定。但我认为@Kay的回答很好,这是OP的目的,所以我不进行调查。欢迎!正如所说的,Github当然也是一个很好的解决方案。也就是说,我使用install_github{devtools}或它的黑客版本从给定的repo中仅获取函数,请参见:Kay,我想知道如何使用可共享链接从Google Drive获取函数,例如:
    source(“https://drive.google.com/file/d/0B5V8AyEFBTmXUDctVlBCc2ZyNUk/view?usp=sharing“”