Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/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
如何在不使用外部图像宿主的情况下,在由knitr生成的github上以降价方式显示图像?_R_Github_Knitr_Rstudio - Fatal编程技术网

如何在不使用外部图像宿主的情况下,在由knitr生成的github上以降价方式显示图像?

如何在不使用外部图像宿主的情况下,在由knitr生成的github上以降价方式显示图像?,r,github,knitr,rstudio,R,Github,Knitr,Rstudio,我喜欢将包含多个R标记和标记文件的存储库上载到github 这是一个例子。这里有一个屏幕抓图 问题是图像无法显示。您可以单击图像,然后转到存储文件的位置。 引用的文件是: https://github.com/... /blob/.../myfigure.png 而我认为它需要参考 https://github.com/... /raw/.../myfigure.png 我考虑的事情: imgur:我可以通过添加以下代码来使用外部图像托管(例如): ```{r setup} opt

我喜欢将包含多个R标记和标记文件的存储库上载到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:还有一个非常酷的。然而,在发布时,它似乎更适合于单个降价文档,而不是多个R降价文档。而且它没有在源R标记和标记文档之间提供如此紧密的联系

问题:
  • 是否有使用R Markdown和knitr生成标记文件的工作流,当上载到github时,该文件允许标记文件显示存储在github存储库中的图像

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

opts_knit$set(base.url='https://github.com/.../raw/.../')
查看更改和

另见

编辑[使用更新将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())
}

create\u gitpath在标记文件开头的以下代码是什么

``` {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="/"))
```
`{r设置,echo=FALSE,message=FALSE}

gitsubdir有一些选项可以使用base64编码魔法在html中嵌入图像,我不记得在哪里看到过这个though@baptiste这对降价有用吗?我的印象是,这只对HTML有效,但我还没有仔细研究。或者,您可以对生成的每个文档运行一个regexp,这将更改
foo/blob/..
foo/raw/..
在标记文件中。如果您愿意,我可以在标记文件中对图像进行base64编码;请向我提交一个问题:标记与HTML在这里没有什么不同;这只是
![](url)的问题
@JeromyAnglim我几乎完成了这项工作,但不幸的是,我刚刚意识到github在其标记中不支持base64编码的图像…叹气。刚刚联系了他们。+1谢谢。我目前正在探索如何以优雅的方式实际工作,特别是当您在多个文件夹中有多个R标记文件时还有一个挑战是将其合并到makefile中,以便只在最后添加,就在推送到github之前。当然,如果您在将图像提交到github之前添加它,那么您在初步数据分析中就看不到图像。您所要做的就是使用运行
knit
de>base.url=''
直到您想要推送到github,然后使用github url进行最后一次运行。然后,当您想要更新代码时,将其返回base.url='',然后在更新时将其更改回github base.url,并确保为每个子文件夹中的每个R标记文件键入所有内容。我同意这一点这并不难,但我仍然认为让它变得优雅和自动化还有一个小任务,特别是当你有一个包含许多R降价文件的存储库时。例如,我有一个包含20多个单独R降价文件夹的回购。但我想我开始陷入一个与我最初提出的问题略有不同的问题。也许你需要调用
knit.github
后,将
base\u url
设置为其以前的值?此解决方案和下面的解决方案对我不起作用。我仍然看到“R项目图像”例如,作为一个链接,但没有图像。+1谢谢。我认为类似的东西将是一个很好的构建块,作为某种类型的makefile的一部分,可能是一个sed脚本,可以根据需要插入此命令。什么时候不需要?我想你只想在github上查看图形?