根据选定的 tabItem 创建反应式数据框

Create reactive data frame dependent on selected tabItem

在我的 shinyApp 中,我有一个数据框,我希望它根据所选的选项卡做出反应。 我尝试了以下方法,但它不起作用。还有其他想法吗?

library(shiny)
library(shinydashboard)
library(tidyverse)

data = tibble(colOne=c(1:10), colTwo=c(rep(1, 5), rep(2, 5)))

header = dashboardHeader(disable = TRUE)
sidebar = dashboardSidebar(
  
  sidebarMenu(
    menuItem(text = "Name for first Tab", tabName = "start"),
    menuItem(text = "Name for second Tab", tabName = "1"),
    menuItem(text = "Name for third Tab", tabName = "2")
  )
)

body = dashboardBody(
          
  tabItems(   
  tabItem(tabName = "start"),
  tabItem(tabName = "1"),
  tabItem(tabName = "2")))

ui = dashboardPage(header = header, sidebar = sidebar, body = body)

server = function(input, output, session){
  
reactive_data = reactive({
    data %>% filter(colTwo == input$tabName)
}

shinyApp(ui, server)

您可以将 id 添加到您的 sidebarMenu。然后,这可用于对所选菜单进行更改。这应该是一个工作示例:

library(shiny)
library(shinydashboard)
library(tidyverse)

data = tibble(colOne=c(1:10), colTwo=c(rep(1, 5), rep(2, 5)))

header = dashboardHeader(disable = TRUE)
sidebar = dashboardSidebar(
  sidebarMenu(id = "tab", 
    menuItem(text = "Name for first Tab", tabName = "start"),
    menuItem(text = "Name for second Tab", tabName = "1"),
    menuItem(text = "Name for third Tab", tabName = "2")
  )
)

body = dashboardBody(
  tabItems(   
    tabItem(tabName = "start"),
    tabItem(tabName = "1"),
    tabItem(tabName = "2")))

ui = dashboardPage(header = header, sidebar = sidebar, body = body)

server = function(input, output, session){
  
  observe({
    print(reactive_data())
  })
  
  reactive_data <- reactive({
    data %>% 
      filter(colTwo == input$tab)
  })
  
}

shinyApp(ui, server)