Adicionando html_document de um RMarkdown em um ShinyApp

Olá pessoal!

Tudo bem? Eu estava fazendo o trabalho final do curso de Dashboards e esbarrei numa dúvida: como adicionar um HTML renderizado a partir de um RMarkdown dentro de um ShinyApp.

Eu já consegui descobri que consigo adicionar um HTML renderizado a partir de um código RMarkdown se eu substituir o output dele de html_document para html_fragment. Parece que existe algum tipo de conflito entre o fluidPage e o html do RMarkdown pois ambos crias as tags head, body e etc, como explicado aqui. Assim, usando essa gambiarra, consegui colocar o html gerado dentro do includeHTML, e ter o resultado que eu esperava.

No entanto, àquela solução só funciona quando os componentes dentro do HTML são todos estáticos (e.g., texto, figuras do ggplot2, tabelas normais): se existem componentes dinâmicos dentro do HTML gerado pelo RMarkdown (como reactables e figuras do plotly), então essa gambiarra não funciona. Alguém sabe de um jeito de fazer isso (geral essa página HTML com conteúdo dinâmico e colocar ela direto dentro do Shiny)?

Eu gostaria de fazer isso pois essa paginazinha HTML contém só os resultados de uma análise, que não vai ter nenhum componente de interatividade do Shiny dentro - só um report mesmo que quero colocar no Shiny.

Qualquer input ajuda muito aqui! :slight_smile:

Obrigado!

Oi, Nicholas, tudo bom?

Eu vejo 3 caminhos.

  • O caminho seguro e sem emoções seria salvar os resultados dessa análise e apenas carregá-los dentro do Shiny. Nesse caso, você teria bem mais controle sobre o layout, já que estaria tudo dentro do gridsystem do Shiny.

  • O caminho curto seria colocar o arquivo na pasta /www e disponibilizar acesso a ele usando um link. Essa página seria uma na verdade uma “sub-página” do seu app. O problema aqui é que seria mais difícil fazer o app e a página estática ficarem com a mesma identidade visual.

  • O atalho seria colocar essa página na pasta /www e inserir dentro do seu app usando um iframe.

Se for possível transformar o seu arquivo .Rmd em .md, também poderia usar a função shiny::includeMarkdown(). Mas eu não sei se resultaria no mesmo problema com os htmlwidgets.

Um abraço,