reports - Cómo refactorizar la parte del servidor del código Shiny de las secciones de Rmarkdown
shiny r (1)
Tengo la siguiente aplicación Shiny-dashboard completamente ejecutiva:
---
title: "Test"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: rows
theme: bootstrap
vertical_layout: scroll
---
```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
```
Basic
=====================================
Inputs_basic {.sidebar}
-------------------------------------
```{r io_processes}
selectInput("mpg_thres", label = "MPG threshold",
choices = c(10,20,30,40), selected = 10)
selectInput("cyl_thres", label = "CYL threshold",
choices = c(4,5,6,7,8), selected = 4)
```
Rows {data-height=500}
-------------------------------------
### Scatter Plot
```{r show_scattr}
mainPanel(
renderPlot( {
dat <- as.tibble(mtcars) %>%
select(mpg, cyl) %>%
filter(mpg > input$mpg_thres & cyl > input$cyl_thres)
ggplot(dat, aes(mpg, cyl)) +
geom_point()
})
)
```
Rows {data-height=500}
-------------------------------------
### Show verbatim
```{r show_verbatim}
mainPanel(
renderPrint( {
dat <- as.tibble(mtcars) %>%
select(mpg, cyl) %>%
filter(mpg > input$mpg_thres & cyl > input$cyl_thres)
dat
})
)
```
Tenga en cuenta que la siguiente parte del código es redundante entre dos secciones diferentes de Rmarkdown Gráfico de dispersión y Mostrar literalmente .
dat <- as.tibble(mtcars) %>%
select(mpg, cyl) %>%
filter(mpg > input$mpg_thres & cyl > input$cyl_thres)
¿Cómo puedo factorizarlo?
Para completar, la captura de pantalla de la aplicación es la siguiente:
Use una expresión de datos reactiva, cambie los fragmentos de salida a:
### Scatter Plot
```{r show_scattr}
dat <- reactive( {
as.tibble(mtcars) %>%
select(mpg, cyl) %>%
filter(mpg > input$mpg_thres & cyl > input$cyl_thres)
} )
mainPanel(
renderPlot( {
ggplot(dat(), aes(mpg, cyl)) +
geom_point()
})
)
```
### Show verbatim
```{r show_verbatim}
mainPanel(
renderPrint( {
dat()
})
)
```
Tenga en cuenta el uso de reactive
, así como llamar a dat
como una función ( dat()
).
reactive
se asegura de que cada vez que se cambien las entradas, se dat
calcular dat
.