我正在研究前面的问题Collapse rowGroup Shiny和提供的解决方案.

library(shiny)
library(DT)
ui <- fluidPage(# Application title
  titlePanel("Collapse/Expand table"),
  mainPanel(DTOutput("my_table")))

callback_js <- JS(
    "table.on('click', 'tr.dtrg-group', function () {",
    "  var rowsCollapse = $(this).nextUntil('.dtrg-group');",
    "  $(rowsCollapse).toggleClass('hidden');",
    "});",
    "table.one('init', () => $('#my_table .dtrg-group').trigger('click'))"
  )

server <- function(input, output) {
  output$my_table <- DT::renderDT({
    datatable(
      mtcars[1:15, 1:5],
      extensions = 'RowGroup',
      options = list(rowGroup = list(dataSrc = 2), pageLength = 20),
      callback = callback_js,
      selection = 'none'
    )
  })
}

# Run the application
shinyApp(ui = ui, server = server)

我设法增强了JS,以便折叠该表的唤醒视图.本例中的数据基于对应于mtards表的第二列的dataSrc=2进行折叠,即‘cyl’列.我需要:我需要能够看到每个赛车类别的汽车计数时,表是崩溃的.我怎么能做到这一点?

推荐答案

这里是一个示例,其中通过编辑对应的innerHTML将每个类别的计数写入折叠的行组.您可以通过将以下JS添加到您的回调中来实现此功能.

table.on('init', () => $('#my_table .dtrg-group').each(function(i, obj) {
    var grpcount = $(this).nextUntil('.dtrg-group').length.toString();
    this.innerHTML = this.innerHTML.replace('</th>', ', count: ' + grpcount + '</th>');
}));"

enter image description here

library(shiny)
library(DT)

ui <- fluidPage(# Application title
    titlePanel("Collapse/Expand table"),
    mainPanel(DTOutput("my_table")))

callback_js <- JS(
    "table.on('click', 'tr.dtrg-group', function () {",
    "  var rowsCollapse = $(this).nextUntil('.dtrg-group');",
    "  $(rowsCollapse).toggleClass('hidden');",
    "});",
    "table.one('init', () => $('#my_table .dtrg-group').trigger('click'))",
    "table.on('init', () => $('#my_table .dtrg-group').each(function(i, obj) {",
    "    var grpcount = $(this).nextUntil('.dtrg-group').length.toString();",
    "    this.innerHTML = this.innerHTML.replace('</th>', ', count: ' + grpcount + '</th>');",
    "}));"
)

server <- function(input, output) {
    output$my_table <- DT::renderDT({
        datatable(
            mtcars[1:15, 1:5],
            extensions = 'RowGroup',
            options = list(
                rowGroup = list(dataSrc = 2),
                pageLength = 20
            ),
            callback = callback_js,
            selection = 'none'
        )
    })
}

# Run the application
shinyApp(ui = ui, server = server)

R相关问答推荐

如何在热图中绘制一个图形,但在每个单元格中通过饼形图显示?

使用Shiny组合和显示复制和粘贴的数据

根据收件箱中的特定值提取列名

寻找图片边缘

将非重复序列高效转换为长格式

用相同方法得到不同函数的ROC最优截断值

如何改变时间图R中的悬停信息?

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

使用for循环和粘贴创建多个变量

R -在先前group_by级别汇总时获取最大大小子组的计数

更新R中的数据表(使用data.table)

在列表中排列R数据框中的列顺序

将箭头绘制在图形外部,而不是图形内部

R如何将列名转换为更好的年和月格式

优化从每个面的栅格中提取值

创建在文本字符串中发现两个不同关键字的实例的数据框

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

数据集上的R循环和存储模型系数

长/纬点继续在堪萨斯-SF结束,整齐的人口普查

如何为包创建自定义roxygen2标签?