'imprimir' widgets HTML no Rmarkdown gerado programaticamente
Oct 19 2020
Estou tentando gerar programaticamente alguns Rmarkdown e uma das seções contém um widget HTML. Eles são reproduzidos corretamente se forem os últimos em minha função. No entanto, se eu envolvê-los em um printpara poder colocar outra coisa depois deles, como você faria para um gráfico, eles não produzem nenhuma saída.
Talvez tenha algo a ver com a maneira como knitrlida com a impressão, não tenho certeza. Mas alguém sabe como posso fazer com que os widgets HTML se comportem como os gráficos no Rmarkdown gerado programaticamente?
Exemplo .Rmd
---
title: "R Notebook"
output:
html_document:
df_print: paged
---
```{r}
ex_plot <- ggplot2::ggplot(iris, ggplot2::aes(Sepal.Length,Sepal.Width)) +
ggplot2::geom_point()
gen_rmarkdown_widget_last <- function() {
cat("# Head 1\n\n")
DT::datatable(iris)
}
gen_rmarkdown_plots <- function() {
cat("# Head 1\n\n")
print(ex_plot)
cat("# Head 2\n\n")
}
gen_rmarkdown_widgets <- function() {
cat("# Head 1\n\n")
print(DT::datatable(iris))
# tried loading from file
# tmp <- tempfile()
# htmlwidgets::saveWidget(DT::datatable(iris), tmp)
# knitr::include_url(tmp)
# tried a different widget
# print(plotly::ggplotly(ex_plot))
cat("# Head 2\n\n")
}
```
```{r, results='asis'}
# works fine
gen_rmarkdown_widget_last()
```
```{r, results='asis'}
# works fine
gen_rmarkdown_plots()
```
```{r, results='asis'}
# Can't have an HTML widget if it is followed by other things
gen_rmarkdown_widgets()
```
Respostas
1 Waldi Oct 19 2020 at 18:12
A questão foi discutida aqui .
Adicionar as dependências manualmente é feito com:
data.frame() %>%
DT::datatable() %>%
knitr::knit_print() %>%
attr('knit_meta') %>%
knitr::knit_meta_add() %>%
invisible()
No exemplo que você forneceu:
---
title: "R Notebook"
output:
html_document:
df_print: paged
---
```{r}
library(dplyr)
#load dependencies
data.frame() %>%
DT::datatable() %>%
knitr::knit_print() %>%
attr('knit_meta') %>%
knitr::knit_meta_add() %>%
invisible()
ex_plot <- ggplot2::ggplot(iris, ggplot2::aes(Sepal.Length,Sepal.Width)) +
ggplot2::geom_point()
gen_rmarkdown_widget_last <- function() {
cat("# Head 1\n\n")
DT::datatable(iris)
}
gen_rmarkdown_plots <- function() {
cat("# Head 1\n\n")
print(ex_plot)
cat("# Head 2\n\n")
}
gen_rmarkdown_widgets <- function() {
cat("# Head 1\n\n")
cat(knitr::knit_print(DT::datatable(iris)))
cat("\n \n")
cat("# Head 2\n\n")
}
```
```{r, results='asis'}
gen_rmarkdown_widgets()
```
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas