如何将我的 selectInput 链接到我的 DataTable 以根据选择更新表? (这是R闪亮)

Posted

技术标签:

【中文标题】如何将我的 selectInput 链接到我的 DataTable 以根据选择更新表? (这是R闪亮)【英文标题】:How can I link my selectInput to my DataTable to update the table based on the selections? (this is R Shiny) 【发布时间】:2021-10-25 21:28:30 【问题描述】:

具体来说,我使用的是pickerInput(类似于selectInput)和一个renderDataTable。

这是应用程序的外观(您可以看到我试图让过滤器更新数据表的位置 - 如果我选择“setosa”,表应该更新为仅包含 setosa 行):

这是我的最小可重现代码:

library(shiny)
library(data.table)

results <- iris
results$Species <- as.character(results$Species)

# UI
ui <- fluidPage(
    
    # Application title
    titlePanel(
        h1("Iris Table", align="center")
    ),
    
    fluidRow(
        column(3,
               pickerInput("speciesInput", "Species", choices=unique(results$Species), options = list(`actions-box` = TRUE), selected=NULL, multiple=TRUE)
        ),
        column(9, 
               DT::dataTableOutput('table')))
    
)

# Server
server <- function(input, output) 
    
    
    output$table <- DT::renderDataTable(
        DT::datatable(#filter='top',
            escape = FALSE,
            iris
        ))
    


# Run the application 
shinyApp(ui = ui, server = server)

【问题讨论】:

【参考方案1】:

试试这个

library(shiny)
library(data.table)

results <- iris
results$Species <- as.character(results$Species)

# UI
ui <- fluidPage(
  
  # Application title
  titlePanel(
    h1("Iris Table", align="center")
  ),
  
  fluidRow(
    column(3,
           pickerInput("speciesInput", "Species", choices=unique(results$Species), options = list(`actions-box` = TRUE), selected=NULL, multiple=TRUE)
    ),
    column(9, 
           DT::dataTableOutput('table')))
  
)

# Server
server <- function(input, output) 
  
  mydata <- reactive(
    if (is.null(input$speciesInput)) df <- results
     else df <- results[results$Species %in% input$speciesInput,]
    df
  )
  
  output$table <- DT::renderDataTable(
    datatable(mydata())
    )
  


# Run the application 
shinyApp(ui = ui, server = server)

【讨论】:

完美!有没有办法扩展它以使反应功能适用于多个 pickerInput 过滤器?例如,我有 3 个pickerInputs 而不是物种的 1 个。 当然。看看这个answer。您只需将selectInput 替换为pickerInput 并进行一些小调整。 另外,this 可能会有所帮助。

以上是关于如何将我的 selectInput 链接到我的 DataTable 以根据选择更新表? (这是R闪亮)的主要内容,如果未能解决你的问题,请参考以下文章

使用 otest 调试测试时,如何将我的可执行文件链接到我的测试包?

我无法将我的 pygame 游戏链接到我的 tkinter GUI

正确地将我的按钮链接到我的视图(在 UINavigationController 中)?

在闪亮中将 selectInput 与 sliderInput 链接起来

我正在努力寻找一种将我的服务器链接到我的 Roblox 游戏的好方法

我正在尝试将我的表单链接到我的 PHP 页面,并且我想在用户单击提交按钮时将用户的输入打印到该页面上