Rmarkdown वर्गों से शाइनी कोड के सर्वर भाग को रिएक्टर कैसे करें



shiny refactoring (1)

मेरे पास पूरी तरह से चल रहे चमकदार-डैशबोर्ड ऐप हैं:

---
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
  })

)
```

ध्यान दें कि कोड के निम्नलिखित भाग में दो अलग-अलग रैमार्कडाउन अनुभाग स्कैटर प्लॉट के बीच बेमानी है और शब्दशः दिखाएं

 dat <- as.tibble(mtcars) %>%
        select(mpg, cyl) %>%
        filter(mpg > input$mpg_thres & cyl > input$cyl_thres)

मैं इसे कैसे विभेदित कर सकता हूं?

एप्लिकेशन के स्क्रीन शॉट की पूर्णता यह है:


प्रतिक्रियाशील डेटा अभिव्यक्ति का उपयोग करें, अपनी आउटपुट मात्रा को इसमें बदलें:

### 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()
  })
)
```

एक समारोह ( dat() ) के रूप में reactive साथ-साथ कॉल करने के लिए ध्यान दें।

reactive यह सुनिश्चित करता है कि हर बार इनपुट बदल dat , dat की पुन: गणना की जाएगी।





flexdashboard