【问题标题】:How to update a character vector from shiny textInput?如何从闪亮的 textInput 更新字符向量?
【发布时间】:2019-07-28 07:09:28
【问题描述】:

我想在每次单击按钮时将输入文本添加到 Shiny 应用程序中的矢量。这是我正在使用的示例:

library(shiny)
ui <- fluidPage(
     textInput(inputId = "inquiry", label = "enter text"),
     actionButton(inputId = "searchButton", label = "Run"),
     verbatimTextOutput("queryList", placeholder = FALSE)
)
server <- function(input, output, session) {
     queryList <- c()
     observeEvent(input$searchButton, {
          queryList[length(queryList)+1] <- input$inquiry
          output$queryList <- renderPrint({
               queryList
          })
     })
}
shinyApp(ui = ui, server = server)

所以如果输入"item1"并单击按钮,然后输入"item2"并再次单击按钮,queryList应该看起来像c("item1", "item2"),但它似乎只是将"item1"替换为"item2"。我确定我遗漏了一些非常简单的东西...queryList[length(queryList)+1] 看起来有点奇怪,但它可以在非反应性环境中工作。

【问题讨论】:

    标签: r shiny shiny-reactivity


    【解决方案1】:

    让 queryList 响应式为我修复了它:

    library(shiny)
    
    ui <- fluidPage(
      textInput(inputId = "inquiry", label = "enter text"),
      actionButton(inputId = "searchButton", label = "Run"),
      verbatimTextOutput("queryList", placeholder = FALSE)
    )
    
    server <- function(input, output, session) {
      queryList <- reactiveValues()
      queryList$values <- c()
    
      observeEvent(input$searchButton, {
        queryList$values[length(queryList$values) + 1] <- input$inquiry
      })
    
      output$queryList <- renderPrint({
        if (!is.null(queryList$values)) {
          queryList$values
        }
      })
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 2016-09-22
      • 2021-01-20
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 2018-03-03
      相关资源
      最近更新 更多