Shiny flexdashboard模块内条件式响应UI元素问题求助
我帮你搞定这个第二个标签页的问题啦!下面是调整后的完整可复现代码,完全符合你的需求:
修复后的Flexdashboard完整代码
--- title: "Dynamic Table Dashboard" output: flexdashboard::flex_dashboard --- ```{r setup, include=FALSE} library(flexdashboard) library(shiny) library(dplyr)
标签页1:基础表格
selectInput("tab1_select", "选择数据集", choices = c("CO2", "iris")) renderTable({ switch(input$tab1_select, "CO2" = CO2, "iris" = iris) })
标签页2:动态联动表格
# 初始数据集选择开关 selectInput("dataset_switch", "数据集开关", choices = c("d" = "CO2", "e" = "iris")) # 动态生成第二个选择框(列选择) renderUI({ req(input$dataset_switch) selected_data <- get(input$dataset_switch) selectInput("col_select", "选择列", choices = colnames(selected_data)) }) # 渲染最终表格 renderTable({ req(input$dataset_switch, input$col_select) selected_data <- get(input$dataset_switch) selected_data %>% select(all_of(input$col_select)) })
### 关键逻辑说明 - **初始数据集切换**:第一个选择框`dataset_switch`直接绑定了你要求的规则——选'd'加载CO2数据集,选'e'加载iris数据集 - **动态列选择框**:通过`renderUI`实现联动:只有当第一个选择框有输入时,才会根据当前选中的数据集,把它的列名作为第二个选择框的选项,确保选项和数据集完全匹配 - **表格动态渲染**:用`req()`确保两个选择框都有输入后,再筛选出选中的列展示表格,避免页面加载时出现错误 内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

