You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shinydashboard的selectizeInput中显示函数名称而非代码?

解决selectizeInput显示自定义名称而非函数代码的问题

要实现下拉选项显示自定义名称(如“月度”“年度”),只需将choices参数设置为命名向量,把显示名称作为向量的名称,对应的函数作为向量的值即可。这样Shiny会显示名称,后台实际传递的是对应的函数对象。

修改后的完整代码

library(shiny)
library(shinydashboard)

annual <- function(x){
  (x/lag(x, 12) - 1)*100
}

monthly <- function(x){
  (x/lag(x) - 1)*100
}

ui <- dashboardPage(
  dashboardHeader(title = 'Dashboard'),
  dashboardSidebar(sidebarMenu(
    menuItem(tabName = 'Panel1', text = 'Panel 1')
  )),
  dashboardBody(
    tabItems(tabItem(tabName = 'Panel1',
                     fluidRow(box(selectizeInput('select', 'Select', 
                                                 # 关键修改:使用命名向量定义选项
                                                 choices = c("月度" = monthly, "年度" = annual)),
                                  height=80,width=4)),
                     fluidRow(box(width = 13, height = 655))
    ))
  )
)

server <- function(input, output) {
  # 示例:调用选中的函数处理数据
  observe({
    selected_func <- input$select
    if(!is.null(selected_func)){
      # 假设有数据框df及数值列value,可执行如下逻辑
      # result <- selected_func(df$value)
      print(paste("已选中:", names(input$select)))
    }
  })
}

shinyApp(ui, server)

关键说明

  • 在selectizeInput的choices参数中,c("月度" = monthly, "年度" = annual)是命名向量:
    • 引号内的“月度”“年度”是前端显示的选项名称
    • monthly和annual是对应的函数对象,后台可直接调用
  • 在server端,input$select返回选中的函数对象,通过names(input$select)可获取对应的显示名称,方便后续逻辑处理

内容的提问来源于stack exchange,提问作者Tanga94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:51:03