Заставить функцию выводить разные результаты в зависимости от формата вывода rmarkdown

#r #r-markdown

#r #r-markdown

Вопрос:

Я создал небольшую функцию, которая, учитывая таблицу в качестве аргумента, выводит некоторый HTML, который позволяет отображать различные представления этой таблицы с интерфейсом с вкладками.

Проблема в том, что это хорошо работает при рендеринге HTML-документа, но ломается, если я хочу сгенерировать PDF. Решением было бы сделать функцию осведомленной о текущем формате вывода rmarkdown, чтобы она выводила правильный код. Что-то вроде этого :

 function() {
    if (current_output_format=="html") output_something_in_html()
    if (current_output_format=="pdf") output_something_in_latex()
}
 

Итак, есть ли способ определить при вызове render() , какой формат вывода отображается в данный момент?

Заранее спасибо за любую помощь.

Комментарии:

1. Хакерским решением является использование Makefile . При компиляции создайте временную копию файла для pdf вывода и установите соответствующие флаги.

2. @csgillespie Да, именно так я сейчас с этим справляюсь, но это не очень «переносимо». Спасибо!

Ответ №1:

Как насчет обнаружения ошибки и разумного решения этой проблемы. Итак, что-то вроде:

 ans = try(do_default(), TRUE)
if(class(ans)== "try-error") 
    ans = do_fall_back()
 

Все еще не лучшее решение, но, по крайней мере, оно переносимо.

Комментарии:

1. Это может быть способ, но мой код не вызывает никаких ошибок. Я просто хочу вывести что-то другое (HTML или LaTeX) в зависимости от отображаемого формата.

2. Тогда у меня нет никаких предложений: (