shiny分级菜单实现

本文主要目的实现R shiny中的分级菜单

选择地区A之后,再选择A地区的门店(下拉选项中只显示A地区门店)

实现效果

shiny分级菜单(shinydashboard界面)

代码

global.R

options(stringsAsFactors=FALSE, scipen=10, digits=4)

library(dplyr)

df_sample <- data.frame(region=rep(LETTERS[1:3], 4),
                        store=paste(rep(LETTERS[1:3], 4), 1:4, sep=""),
                        result=sample(1:100, 12))
region <- unique(df_sample$region)

ui.R

library(shiny)
library(shinydashboard)

shinyUI(
  dashboardPage(
    dashboardHeader(title = "分级菜单"),

    dashboardSidebar(
      sidebarMenu(
        selectInput("region", "地区:", choices = region),

        uiOutput("slt_store"),

        menuItem("分级菜单", tabName = "tab_budget", icon = icon("gear"))
      )
    ),


    dashboardBody(
      tabItems(
        tabItem(tabName = "tab_budget", fluidRow( # 原始数据 box(h1("原始数据"), tableOutput("df1")), # 筛选结果 box(h1("筛选结果"), tableOutput("df2")) ) )
      )
    )
  )
)

server.R

library(shiny)
library(shinydashboard)

shinyServer(function(input, output) {

  store_t <- reactive({
    df_sample %>%
      filter(region == input$region) %>%
      select(store)
  })
  # 在server.R中使用renderUI
  output$slt_store <- renderUI({
    selectInput("store", "门店:", choices = store_t()$store)
  })

  output$df1 <- renderTable({
    df_sample %>%
      arrange(region, store)
  })

   output$df2 <- renderTable({
     df_sample %>%
       filter(region == input$region) %>%
       filter(store == input$store)
  })
})
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值