2014-09-04 3 views
4

У меня есть реактивное выражение, значение которого я хочу извлечь из того, что из двух других реактивных выражений было изменено совсем недавно. Я сделал следующий пример:Выбор последних измененных реактивных выражений в Shiny

ui.r:

shinyUI(bootstrapPage(
column(4, wellPanel(
    actionButton("button", "Button"), 
    checkboxGroupInput("check", "Check", choices = c("a", "b", "c")) 
)), 
column(8, 
    textOutput("test") 
) 
)) 

И server.r:

shinyServer(function(input, output) { 
output$test <- renderText({ 
    # Solution goes here 
}) 
}) 

Я хотел бы на выходе, чтобы показать значение или button (сколько раз была нажата кнопка) илиcheck (вектор символов, показывающий, какие поля отмечены) в зависимости от, который был изменен совсем недавно.

ответ

4

Вы можете добиться этого с помощью reactiveValues отслеживать текущее состояние нажатия кнопок:

library(shiny) 
runApp(list(ui = shinyUI(bootstrapPage(
    column(4, wellPanel(
    actionButton("button", "Button"), 
    checkboxGroupInput("check", "Check", choices = c("a", "b", "c")) 
)), 
    column(8, 
     textOutput("test") 
) 
)) 
, server = function(input, output, session){ 
    myReactives <- reactiveValues(reactInd = 0) 
    observe({ 
    input$button 
    myReactives$reactInd <- 1 
    }) 
    observe({ 
    input$check 
    myReactives$reactInd <- 2 
    }) 
    output$test <- renderText({ 
    if(myReactives$reactInd == 1){ 
     return(input$button) 
    } 
    if(myReactives$reactInd == 2){ 
     return(input$check) 
    } 
    }) 
} 
) 
) 

enter image description here