反应式编程多个动作按钮相同的值渲染问题

时间:2017-01-10 08:29:28

标签: r shiny

我有4个动作按钮......但是想要相同的返回值名称。因为它用于其他元素。我将反应元素初始化为

myReactiveDF <- reactiveValues(data=NULL)

myReactiveDF <- eventReactive(input$action1, {
call functions
return(dataframe)
})

myReactiveDF <- eventReactive(input$action2, {
call functions
return(dataframe)
})
.....

但是只有最后一个按钮4才有效。前三个没有。 所有其他元素使用相同的反应元素(dataframe)来填充。 我尝试了observeEvent,但它没有返回值。

1 个答案:

答案 0 :(得分:2)

以下代码应该按照我的理解来解决您的要求:

library(shiny)

ui <- fluidPage(
  fluidRow(column(2, selectInput('action1', label = "Action1:", choices =  c('a','b') )),
           column(4, selectInput('action2', label = "Action2:", choices =  c('A','B') ))),
  fluidRow( verbatimTextOutput("outputs"))
)

server = function(input, output, session){

  v <- reactiveValues(data = NULL)

  observeEvent(input$action1, {
    v$data <- input$action1
  })

  observeEvent(input$action2, {
    v$data <- input$action2
  })

  output$outputs <- renderText({ 
    if (is.null(v$data)) return()
    v$data
  })
}

shinyApp(ui = ui, server = server)

如果您需要的是不同的,请告诉我,以便我可以修改答案。