16

我喜欢将包含多个 R Markdown 和 Markdown 文件的存储库上传到 github。

这是github 上此类降价文件的示例。这是一个屏幕抓取。


在此处输入图像描述


问题是图像不显示。您可以单击图像,然后您将转到文件的存储位置。引用的文件是:

 https://github.com/... /blob/.../myfigure.png

而我认为它需要参考

 https://github.com/... /raw/.../myfigure.png

我考虑的事情:

imgur:我可以通过添加以下代码来使用外部图像托管(例如,参见此示例):

```{r setup}
opts_knit$set(upload.fun = imgur_upload) # upload all images to imgur.com
````

但是,由于各种原因,我不想这样做(我在防火墙后面上传时遇到问题;它很慢;它会产生不必要的依赖)

Rpubs:还有非常酷的Rpubs 。但是,在发布时,它似乎更适合单个降价文档而不是多个 R 降价文档。而且它没有在源 R Markdown 和 Markdown 文档之间提供如此紧密的联系。

问题

  • 是否有使用 R Markdown 和 knitr 生成 Markdown 文件的工作流程,这些文件在上传到 github 时允许 Markdown 文件显示存储在 github 存储库中的图像?
4

2 回答 2

11

这曾经是最小示例的一部分,使用

opts_knit$set(base.url='https://github.com/.../raw/.../')

在此处此处查看更改。

另见http://yihui.name/knitr/options

编辑[更新以将 base.url 恢复为以前的值

关于切换,您可以将函数定义为

create_gitpath <- function(user, repo, branch = 'master'){
   paste0(paste('https://github.com', user, repo, 'raw', branch, sep = '/'),'/')
}

my_repo <- create_gitpath(user, repo)

knit.github <- function(..., git_url  ){
 old_url <- opts_knit$get('base.url')
 on.exit(opts_knit$set(base.url = old_url))
 opts_knit$set(base.url  = git_url)
 knit(..., envir = parent.frame())
}

运行knit直到你想推github然后运行knit.github(..., git_url = my_repo)

于 2012-06-28T03:41:56.503 回答
4

Markdown 文件开头的以下代码呢?

``` {r setup,echo=FALSE,message=FALSE}
gitsubdir <- paste(tail(strsplit(getwd(),"/")[[1]],1),"/",sep="")
gitrep <- "https://github.com/mpiktas/myliuduomenis.lt"
gitbranch <- "master"
opts_knit$set(base.url=paste(gitrep,"raw",gitbranch,gitsubdir,sep="/"))
```

gitrep可以对其进行调整,以便gitbranchgit 报告。在这里,我假设我是主 git 存储库目录下的一个目录级别。同样,这可能会被调整以适应更复杂的场景。

我在github上测试过,这里是 Rmd文件和对应的md文件。

于 2012-06-28T07:16:25.740 回答