रीएक्टिविटी 101

केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

Dean Attali

Shiny Consultant

रीएक्टिविटी की मूल बातें

  • Shiny reactive programming का उपयोग करता है
  • आउटपुट इनपुट में बदलाव पर react करते हैं
  • जब वैरिएबल x का मान बदलता है, तो x पर निर्भर सब कुछ फिर से इवैल्युएट होता है
  • रेगुलर R से अंतर:

    x <- 5
    y <- x + 1
    x <- 10
    
  • y का मान क्या है? 6 या 11?

केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

रीएक्टिव वैरिएबल्स

  • सभी इनपुट reactive होते हैं
  • render फंक्शन के अंदर input$<inputId> आउटपुट को री-रेंडर कराता है

    output$my_plot <- renderPlot({
        plot(rnorm( input$num ))
    })
    
  • output$my_plot input$num पर निर्भर है

    • input$num बदले ⇒

      output$my_plot react करता है

केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

रीएक्टिव कॉन्टेक्स्ट्स

  • Reactive वैल्यू केवल reactive contexts के अंदर ही उपयोग करें
  • कोई भी render*() फंक्शन एक reactive context है
  • Reactive वैल्यू को reactive context के बाहर एक्सेस करने पर ⇒ error
server <- function(input, output) { 
    print(input$num)
}
ERROR: Operation not allowed without an active reactive context.
केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

Reactive वैरिएबल observe करें

  • Reactive वैरिएबल एक्सेस करने के लिए observe({ ... }) उपयोग करें

    server <- function(input, output) { 
        observe({ 
            print( input$num )  
        }) 
    }
    
  • डिबगिंग में उपयोगी, reactive वैरिएबल ट्रैक करें

  • हर reactive वैरिएबल एक dependency बनाता है
observe({ 
    print( input$num1 ) 
    print( input$num2 )
})
केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

Reactive वैरिएबल बनाएँ

  • Reactive वैरिएबल बनाने के लिए reactive({ ... }) उपयोग करें

  • गलत:

    server <- function(input, output) {
        x <- input$num + 1
    }
    
    ERROR: Operation not allowed without an active reactive context.
    
  • सही:

    server <- function(input, output) { 
      x <- reactive({ 
          input$num + 1 
      })
    }
    
केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

रीएक्टिव वैरिएबल्स

  • कस्टम reactive वैरिएबल को फंक्शन की तरह एक्सेस करें:
    • कोष्ठक () जोड़ें
server <- function(input, output){
    x <- reactive({
        input$num + 1
    }) 
    observe({ 
        print( input$num )
        print( x() ) 
    })
}
केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

अभ्यास करते हैं!

केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना

Preparing Video For Download...