Reaktivite 101

Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Dean Attali

Shiny Consultant

Reaktivite temelleri

  • Shiny, reaktif programlama kullanır
  • Çıktılar, giriş değişince tepki verir
  • x’in değeri değişince, x’e bağlı her şey yeniden değerlendirilir
  • Düz R ile karşılaştırın:

    x <- 5
    y <- x + 1
    x <- 10
    
  • y’nin değeri nedir? 6 mı 11 mi?

Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Reaktif değişkenler

  • Tüm girdiler reaktiftir
  • Bir render işlevinde input$<inputId> kullanımı çıktıyı yeniden üretir

    output$my_plot <- renderPlot({
        plot(rnorm( input$num ))
    })
    
  • output$my_plot, input$num’a bağlıdır

    • input$num değişirse ⇒

      output$my_plot tepki verir

Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Reaktif bağlamlar

  • Reaktif değerler yalnızca reaktif bağlamlarda kullanılabilir
  • Her render*() işlevi bir reaktif bağlamdır
  • Reaktif bağlam dışında reaktif değere erişim ⇒ hata
server <- function(input, output) { 
    print(input$num)
}
ERROR: Operation not allowed without an active reactive context.
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Reaktif değişkeni gözlemleme

  • Reaktif değişkene erişmek için observe({ ... })

    server <- function(input, output) { 
        observe({ 
            print( input$num )  
        }) 
    }
    
  • Hata ayıklama için yararlı, reaktif değişkeni izler

  • Her reaktif değişken bir bağımlılık yaratır
observe({ 
    print( input$num1 ) 
    print( input$num2 )
})
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Reaktif değişken oluşturma

  • Reaktif değişken oluşturmak için reactive({ ... })

  • Yanlış:

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

    server <- function(input, output) { 
      x <- reactive({ 
          input$num + 1 
      })
    }
    
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Reaktif değişkenler

  • Özel reaktif değişkene işlev gibi erişin:
    • parantez ekleyin ()
server <- function(input, output){
    x <- reactive({
        input$num + 1
    }) 
    observe({ 
        print( input$num )
        print( x() ) 
    })
}
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Hadi pratik yapalım!

Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

Preparing Video For Download...