Casi di studio: creare applicazioni web con Shiny in R
Dean Attali
Shiny Consultant
x cambia, tutto ciò che dipende da x viene ricalcolatoIn R normale invece:
x <- 5
y <- x + 1
x <- 10
Qual è il valore di y? 6 o 11?
input$<inputId> dentro una funzione render fa ri-renderizzare l’output
output$my_plot <- renderPlot({
plot(rnorm( input$num ))
})
output$my_plot dipende da input$num
input$num cambia ⇒
output$my_plot reagisce
render*() è un contesto reattivoserver <- function(input, output) {
print(input$num)
}
ERROR: Operation not allowed without an active reactive context.
Usa observe({ ... }) per accedere a una variabile reattiva
server <- function(input, output) {
observe({
print( input$num )
})
}
Utile per il debug, per tracciare una variabile reattiva
observe({
print( input$num1 )
print( input$num2 )
})
reactive({ ... }) per creare una variabile reattiva
Sbagliato:
server <- function(input, output) {
x <- input$num + 1
}
ERROR: Operation not allowed without an active reactive context.
Corretto:
server <- function(input, output) {
x <- reactive({
input$num + 1
})
}
()server <- function(input, output){
x <- reactive({
input$num + 1
})
observe({
print( input$num )
print( x() )
})
}
Casi di studio: creare applicazioni web con Shiny in R