如何在不使用外部图像托管的情况下在knitr生成的github上显示Markdown中的图像?

Jer*_*lim 15 r github rstudio knitr

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

这是github上这种markdown文件的一个例子.这是一个屏幕抓取.


在此输入图像描述


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

 https://github.com/... /blob/.../myfigure.png
Run Code Online (Sandbox Code Playgroud)

而我认为它需要参考

 https://github.com/... /raw/.../myfigure.png
Run Code Online (Sandbox Code Playgroud)

我考虑的事情:

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

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

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

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

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

mne*_*nel 11

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

opts_knit$set(base.url='https://github.com/.../raw/.../')
Run Code Online (Sandbox Code Playgroud)

请在此处此处查看更改.

另见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())
}
Run Code Online (Sandbox Code Playgroud)

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