r - 如何从 Shiny 的文本输入更新字符向量?

标签 r shiny shiny-reactivity

我想在每次单击按钮时将输入文本添加到 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"),但它似乎只是用 "item2" 替换 "item1" 。我确信我错过了一些非常简单的东西...queryList[length(queryList)+1] 看起来有点奇怪,但它可以在非响应式环境中工作。

最佳答案

使 queryList 响应式(Reactive)为我解决了这个问题:

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)

关于r - 如何从 Shiny 的文本输入更新字符向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55026149/

相关文章:

r - 延迟/避免重复 Shiny 的服务器端功能,直到凭证之后

r - 设置一个绘图缩放以匹配 Shiny 中另一个绘图缩放的缩放

r - 展开数据框并重新标记列名称

python - Python 中是否有等同于 R apply 函数的函数?

R Shiny : conditionalPanel with condition based on textInput (how to)

r - 在信息框中以 Shiny 的方式显示摘要统计信息

r - 有没有办法防止在输入框中输入文本时触发observeEvent()?

r - 如何从 e1071 包中运行 svm 获取预测列表

r - R选项 "max.print"是如何量化的?

r - Shiny 的日期和时间显示 "T"和 "Z"?