2014-08-27 2 views
3

При подготовке отчетов с использованием : http://rmarkdown.rstudio.com/, может потребоваться, чтобы документ отображался по-разному в зависимости от типа документа. Например, я могу захотеть вставить видео youtube, если визуализируемый документ является html-файлом, где, как если бы это был pdf или MS Word, я бы хотел использовать гиперссылку.ifelse action в зависимости от типа документа в rmarkdown

Есть ли способ, чтобы сказать что-то вроде этого:

if (html) { 
    <iframe width="640" height="390" src="https://www.youtube.com/embed/FnblmZdTbYs? feature=player_detailpage" frameborder="0" allowfullscreen></iframe> 
} else { 
    https://www.youtube.com/watch?v=ekBJgsfKnlw 
} 

код

devtools::install_github("rstudio/rmarkdown") 
library(rmarkdown) 
render("foo.Rmd", "all") 

foo.Rmd

--- 
title: "For Fun" 
date: "`r format(Sys.time(), '%d %B, %Y')`" 
output: 
    html_document: 
    toc: true 
    theme: journal 
    number_sections: true 
    pdf_document: 
    toc: true 
    number_sections: true 
    word_document: 
    fig_width: 5 
    fig_height: 5 
    fig_caption: true 
--- 

## Good times 

<iframe width="640" height="390" src="https://www.youtube.com/embed/FnblmZdTbYs?feature=player_detailpage" frameborder="0" allowfullscreen></iframe> 

ответ

2

Да, вы можете получить доступ к outpu t через knitr::opts_knit$get("rmarkdown.pandoc.to"). Это вернет строку с целевым форматом вывода. Вот пример:

--- 
title: "Untitled" 
output: html_document 
--- 

```{r} 
library(knitr) 
opts_knit$get("rmarkdown.pandoc.to") 
``` 

Это возвращает "HTML" для html_document, "DOCX" для word_document, и "латекс" для pdf_document. Поэтому, чтобы ответить на ваш вопрос, вы можете сделать что-то вроде:

html <- knitr::opts_knit$get("rmarkdown.pandoc.to") == "html" 
+0

Спасибо за ответ. Я должен был ответить на это, поскольку я нашел ответ некоторое время назад: https://trinkerrstuff.wordpress.com/2014/11/18/rmarkdown-alter-action-depending-on-document/ –

Смежные вопросы