Примеры использования: создание веб-приложений с Shiny в R
Dean Attali
Shiny Consultant
x всё, что зависит от x, пересчитываетсяВ обычном R всё иначе:
x <- 5
y <- x + 1
x <- 10
Чему равно y? 6 или 11?
input$<inputId> внутри функции рендеринга вызывает повторный рендеринг вывода
output$my_plot <- renderPlot({
plot(rnorm( input$num ))
})
output$my_plot зависит от input$num
input$num изменяется ⇒
output$my_plot реагирует
render*() является реактивным контекстомserver <- function(input, output) {
print(input$num)
}
ERROR: Operation not allowed without an active reactive context.
observe({ ... }) для обращения к реактивной переменной
server <- function(input, output) {
observe({
print( input$num )
})
}
Удобно для отладки и отслеживания реактивных переменных
observe({
print( input$num1 )
print( input$num2 )
})
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
})
}
()server <- function(input, output){
x <- reactive({
input$num + 1
})
observe({
print( input$num )
print( x() )
})
}
Примеры использования: создание веб-приложений с Shiny в R