【问题标题】:R Shiny: Defining a vector with two action buttonsR Shiny:用两个动作按钮定义一个向量
【发布时间】:2016-09-27 23:29:00
【问题描述】:

我正在开发一个闪亮的应用程序。 我正在尝试做的事情:我想将激活两个不同操作按钮的时间顺序“记录”到一个向量中。

例如,如果 button1(红色)被按下两次,那么 button2(黑色)被按下一次,然后 button1(红色)被再次按下 => 向量应该如下所示: col = c("red","re​​d “,“黑红”)。

到目前为止我所做的是(在很多不同的变化中):

col <- NULL observeEvent(input$rot, {col<-c(col,"red")}) observeEvent(input$schwarz, {col<-c(col,"black")}

input$rot 和 input$schwarz 是操作按钮的名称。所以我假设每次按下一个按钮时都应该将相应的颜色添加到向量中。但是:什么都没有发生…… 当然我把向量 col 粘贴到应用程序中,这绝对不是问题。

如果有人有想法,那就太好了。 谢谢

【问题讨论】:

    标签: r loops vector shiny


    【解决方案1】:

    您可以使用reactiveValues在服务器端存储一个向量col

    geschichte <- reactiveValues(col = NULL)
    

    然后,您可以通过geschichte$colgeschichte[["col"]] 在响应式上下文中访问它,并像geschichte 是常规列表一样简单地覆盖:

     observeEvent(input$rot, {
        geschichte$col <- c(geschichte$col, "red")
      })
    

    完整示例:

    library(shiny)
    rm(ui) ; rm(server)
    
    ui <- fluidPage(
      actionButton("rot", "Red"),
      actionButton("schwarz", "Black"),
      br(),
      textOutput("col")
    )
    
    server <- function(input, output) { 
    
      geschichte <- reactiveValues(col = NULL)
    
      observeEvent(input$rot, {
        geschichte$col <- c(geschichte$col, "red")
      })
    
      observeEvent(input$schwarz, {
        geschichte$col <- c(geschichte$col, "black")
        })
    
      output$col <- renderText({
        geschichte$col
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 完美!非常感谢。我也尝试过用反应式来做,但我显然不知道,花了几个小时。谢谢
    猜你喜欢
    • 2021-08-03
    • 1970-01-01
    • 2012-05-19
    • 2021-01-07
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多