闪亮:从具有多个值的 textInput 中子集表

Posted

技术标签:

【中文标题】闪亮:从具有多个值的 textInput 中子集表【英文标题】:Shiny: subsetting a table from a textInput with multiple values 【发布时间】:2020-08-30 23:44:42 【问题描述】:

我有一个简单的 Shiny 应用程序。用户在 textInput 中输入代码,例如:a1、b1、c1 等。

当只列出一个代码时效果很好,但如果用户编写了两个或多个用逗号分隔的代码,则效果不佳。

用户如何输入任意数量的代码?

library(shiny)

ui <- fluidPage(

  titlePanel(""),


  sidebarLayout(
    sidebarPanel(

      textInput(inputId = "textBox",
                label = "Code Search",
                placeholder = "Enter codes here seperated by a comma"),

      actionButton("textSearchButton", "Generate the Table")

    ),

    fluidRow(
      tableOutput("dtOut")
    )
  )
)

server <- function(input, output) 

  df <- data.frame(Code = paste0(letters, 1),
                   Description = "Something here",
                   Value = "Some value")

  outputFunc <- function(code, df)

    # # Dummy data
    # code <- c('a1', 'b1', 'c1')

    outTbl <- df[df$Code %in% code,]

    return(list(outTbl))
  

  textSearch <- eventReactive(input$textSearchButton, 
    outputFunc(input$textBox, df)
  )


  output$dtOut <- renderTable(
    textSearch()[[1]]
  )



shinyApp(ui, server)

【问题讨论】:

【参考方案1】:

我稍微简化了你的代码:

library(shiny)

ui <- fluidPage(

  titlePanel(""),


  sidebarLayout(
    sidebarPanel(

      textInput(inputId = "textBox",
                label = "Code Search",
                placeholder = "Enter codes here seperated by a comma"),

      actionButton("textSearchButton", "Generate the Table")

    ),

    fluidRow(
      tableOutput("dtOut")
    )
  )
)

server <- function(input, output) 

  df <- eventReactive(input$textSearchButton, 
    # outputFunc(input$textBox, df)
    req(input$textBox)
    codes <- unlist(strsplit(input$textBox, ", "))
    return(data.frame(Code = codes,
                      Description = "Something here",
                      Value = "Some value"))
  )

  output$dtOut <- renderTable(
    df()
  )



shinyApp(ui, server)

它是否满足您的需求?

【讨论】:

谢谢。我认为 textInput 的输出是一个简单的向量,而不是一个列表。 这不是一个列表,它是一个字符串。

以上是关于闪亮:从具有多个值的 textInput 中子集表的主要内容,如果未能解决你的问题,请参考以下文章

我可以在闪亮的模块中使用 updateTextInput() 吗?

闪亮 - textInput

从单个表中检索具有不同值的同一列的多个输出时的性能问题

在闪亮的应用程序中将 textInput 元素排列在两列或多列中

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

是否有一个带有“重置”按钮的闪亮 textInput 小部件?