谷歌文档上的R代码
我知道你可以在Google文档上发布电子表格,然后在R中导入它们。但是,假设我有一个函数或一些代码,我想在R中阅读(比如在源函数中)。例如,您将如何读入存储在google文档中的所有这些代码 我不认为这已经出版,但它只是给一个例子 基本上我想:谷歌文档上的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()这样的命令读入它 我的兴趣不是读取数据,而是读取函数。当我不在同一台计算机/服
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(" ", " ", 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“”