У меня есть два файла rmarkdown. Rmd # 1:
---
title: "RMD1"
output: html_document
runtime: shiny
---
<style type="text/css">
h1.title {
text-align: center;
color: DarkBlue;
font-size: 38px;
}
</style>
```{r eruptions, echo=FALSE}
shinyApp(
ui = fluidPage(
inputPanel(
selectInput("n_breaks", label = "Number of bins:",
choices = c(10, 20, 35, 50), selected = 20),
sliderInput("bw_adjust", label = "Bandwidth adjustment:",
min = 0.2, max = 2, value = 1, step = 0.2)
),
plotOutput("eruptionsPlot")),
server = function(input, output) {
output$eruptionsPlot = renderPlot({
hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks),
xlab = "Duration (minutes)", main = "Geyser eruption duration")
dens <- density(faithful$eruptions, adjust = input$bw_adjust)
lines(dens, col = "blue")
})
},
options = list(height = "600px")
)
```
Rmd # 2:
---
title: "RMD2"
output: html_document
runtime: shiny
---
<style type="text/css">
h1.title {
text-align: center;
color: DarkBlue;
font-size: 38px;
}
</style>
У меня есть RMD1 и RMD2, привязанные к двум кнопкам действий в блестящем коде приложения ниже. Мой вопрос: Как сделать так, чтобы RMD1 автоматически отображал (как если бы кнопка действия автоматически нажималась) при загрузке страницы?
Бонусный вопрос: когда я впервые запускаю приложение, мне нужно дважды нажмите кнопку действия, чтобы отобразить файл rmarkdown. Я обошел это, добавив строку ниже, которая не связана ни с какой кнопкой действия, и выдает файл rmarkdown. Не знаю, почему это работает или есть более логичное / элегантное решение.
library(shiny)
library(shinyWidgets)
rmd_list <- list("rmd1.Rmd", "rmd2.Rmd")
ui <- shinyUI(fluidPage(
shinyWidgets::panel(
fluidRow(
column(12, align="center",
actionButton("rmd1", "RMD1"),
actionButton("rmd2", "RMD2")
)
)),
,uiOutput("uioutput")
))
# Define server logic ----
server <- function(input, output, session) {
#So that I dont need to double click on an action button to render any rmarkdown. No idea why this happens, but this is my solution to the "double click" problem.
output$uioutput <- renderUI({
withMathJax(includeHTML(rmarkdown::render(rmd_list[[1]])))
observeEvent(input$rmd1, {
output$uioutput <- renderUI({
withMathJax(includeHTML(rmarkdown::render(rmd_list[[1]])))
})
})
observeEvent(input$rmd2, {
output$uioutput <- renderUI({
withMathJax(includeHTML(rmarkdown::render(rmd_list[[2]])))
})
})
}
# Run the app ----
shinyApp(ui = ui, server = server)