有条件地将视频嵌入R-markdown预定

问题描述

如果我只是将YouTube提供的HTML代码复制并粘贴到.Rmd文件中,则此功能可很好地用于gitbook输出。这是代码示例

<iframe width="560" height="315" src="https://www.youtube.com/embed/9AI3BkKQhn0"
frameborder="0" allow="accelerometer; autoplay; encrypted-media;
gyroscope; picture-in-picture" allowfullscreen>
</iframe>

但是,我收到有关PDF和EPUB输出的错误消息。为了避免这种情况,我认为我可以使用条件编译,例如

```{r}
if (knitr::is_html_output(excludes = "epub")) {
  <iframe width="560" height="315" 
  src="https://www.youtube.com/embed/9AI3BkKQhn0"
  frameborder="0" allow="accelerometer; autoplay; encrypted-media;
  gyroscope; picture-in-picture" allowfullscreen>
  </iframe>
}
```

但是,这在RStudio编辑器中已被删除,以防止意外的令牌。怎么了有没有解决这个问题的方法?

解决方法

欢迎您使用stackoverflow!

  • 是的,条件编译是解决此问题的一种方法。为此,我们需要告诉knitr是否应评估代码块(以输出格式为条件)。必须通过块选项eval而不是代码块内部指定。

  • 请注意,R无法解析纯HTML代码。相反,您可以将HTML代码作为字符串传递给cat()(它将打印字符串),并使用块选项results = 'asis'告诉knitr包括结果。

```{r,eval=knitr::is_html_output(excludes = "epub"),results = 'asis',echo = F}
cat(
'<iframe width="560" height="315" 
  src="https://www.youtube.com/embed/9AI3BkKQhn0"
  frameborder="0" allow="accelerometer; autoplay; encrypted-media;
  gyroscope; picture-in-picture" allowfullscreen>
  </iframe>'
)
```

请注意,我还设置了echo = F,以使代码不会显示在输出中。

有关编织选项的更多信息,请参见Yihui出色的documentation

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...