首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有子行的数据表中的空白(或缺少)列名

问具有子行的数据表中的空白(或缺少)列名
EN

Stack Overflow用户
提问于 2019-07-13 00:13:27
回答 1查看 607关注 0票数 0

我在R中创建了一个datatable,它有子行,手动定义的列名,还隐藏了一些列。

基于DT手册https://rstudio.github.io/DT/002-rowdetails.html中提供的一个示例,这似乎相当简单(即,它已经展示了如何创建子行和隐藏一些列)。但是,当我尝试添加'colnames‘参数来定义非隐藏列的新列名时,它的行为并不像预期的那样。

我尝试删除空白的列标题文本,添加额外的内容,以查看它是否与表中的原始列数相关。如果我删除了隐藏某些列的调用,标题就会正常显示,但我不能删除列(它们需要隐藏),因为表链接到使用这些隐藏列中数据的绘图对象。

代码语言:javascript
复制
library(DT)

datatable(
  cbind(' ' = '⊕', mtcars), escape = -2,
  colnames = c(" ", "GEAR COLUMN", "CARB COLUMN"), # This is the only line added to the original DT example.
  options = list(
    columnDefs = list(
      list(visible = FALSE, targets = c(0, 2, 3:10)), # Removing this line solves the header issue but then all columns are shown.
      list(orderable = FALSE, className = 'details-control', targets = 1)
    )
  ),
  callback = JS("
  table.column(1).nodes().to$().css({cursor: 'pointer'});
  var format = function(d) {
    return '<div style=\"background-color:#eee; padding: .5em;\"> Model: ' +
            d[0] + ', mpg: ' + d[2] + ', cyl: ' + d[3] + '</div>';
  };
  table.on('click', 'td.details-control', function() {
    var td = $(this), row = table.row(td.closest('tr'));
    if (row.child.isShown()) {
      row.child.hide();
      td.html('&oplus;');
    } else {
      row.child(format(row.data())).show();
      td.html('&CircleMinus;');
    }
  });"
  ))

没有提供错误消息,它只是像正常一样显示,但没有所有已定义的列标题。

我怀疑这是一件相对简单的事情,对于那些有过JS调用经验的人来说非常有意义,但不幸的是这不是我的强项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-13 00:45:38

如果要重命名gear和carb列,可以执行以下操作

代码语言:javascript
复制
colnames = c("GEAR COLUMN" = "gear", "CARB COLUMN" = "carb")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57010626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档