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

如何在非嵌入Shiny的R Markdown中用DT选中列生成绘图?

在Shiny Runtime的R Markdown中实现选列绘图

当然可以实现,关键在于给DT表格绑定明确的outputId,这样就能通过input对象捕获选中的列,不用嵌入完整Shiny应用。下面是修改后的完整示例代码:

---
title: "Test"
output:
  flexdashboard::flex_dashboard:
    theme: bootstrap
    orientation: rows
runtime: shiny
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

library(shiny)
library(flexdashboard)
library(DT)
library(highcharter)

Info {.sidebar data-width=300}

选择表格中的一列,上方会自动生成对应箱线图

Row

动态绘图

# 渲染绘图,响应列选择
renderHighchart({
  # 获取选中列的索引,默认选第一列
  selected_col <- input$mtcars_table_columns_selected %||% 1
  col_name <- colnames(mtcars)[selected_col]
  
  # 用highcharter生成箱线图,以mpg为分组,选中列为数值
  highchart() %>%
    hc_add_series(
      data = mtcars,
      type = "boxplot",
      hcaes(x = factor(mpg), y = .data[[col_name]])
    ) %>%
    hc_title(text = paste("箱线图:", col_name, " vs mpg"))
})

Row

mtcars表格

# 先定义输出容器,指定outputId为mtcars_table
dataTableOutput("mtcars_table")

# 渲染表格,绑定到上面的outputId
output$mtcars_table <- renderDataTable(
  mtcars,
  selection = list(mode = "single", target = "column"),
  options = list(scrollX = TRUE)
)
### 关键说明:
- 之前直接用`renderDataTable`没绑定outputId,所以没有对应的`input$xxx_columns_selected`变量。现在添加`dataTableOutput("mtcars_table")`作为输出容器,再用`output$mtcars_table`绑定渲染逻辑,就能正常捕获列选择事件。
- 绘图部分用`renderHighchart`(换成`renderPlot`生成基础绘图也可以)监听`input$mtcars_table_columns_selected`,动态获取选中列名并生成图表。
- `%||%`是Shiny里的运算符,用来处理初始状态(还没选列时默认用第一列),避免空值报错。

这样就能在Shiny Runtime的R Markdown里实现选列绘图,完全不需要嵌入完整Shiny应用。

内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:33:34