【问题标题】:Add tooltip to abbreviated data table names为缩写的数据表名称添加工具提示
【发布时间】:2016-12-17 11:02:33
【问题描述】:

如何在数据表显示的列标题中添加工具提示

output$table <- renderDataTable({
    df <- iris
    colnames(df) <- sapply(names(df), function(x) abbreviate(x))
    df
})

我正在使用的实际数据框(我无法显示)具有很长的名称,并且有 >20 列。因此,有必要使用缩写来以最小的水平滚动显示整个数据框。我正在寻找一种方法来添加悬停在工具提示上,当您将鼠标悬停在缩写的列标题上时,该工具提示会显示每列的完整、非缩写名称。

【问题讨论】:

  • 仅供参考,abbreviate 已矢量化
  • 我的缩写其实比上面的更复杂:abbreviate(unlist(strsplit(x, "[.]"))[2], 9) 因为我只对句号后的部分感兴趣
  • 我猜 DT 标签是相关的。如果我错了,请纠正它。无论如何,DataTable 不是 vanilla R 中的东西。
  • 不一定是数据表。它可以只是一个数据框。如果它只适用于数据框,那么应用程序可以处理依赖关系。
  • 没有一个简单的方法可以做到这一点。你当然可以使用 JavaScript 来实现它,但是如果你不熟悉 JavaScript/jQuery,那就有点挑战了。

标签: r dataframe dt abbreviation


【解决方案1】:
dat <- iris[1:3,]
names(dat) <- c(
  "A long name", 
  "Another long name",
  "Yet another long name",
  "This name is long as well",
  "This one is not short"
)

headerCallback <- c(
  "function(thead, data, start, end, display){",
  "  var ncols = data[0].length;",
  sprintf("  var shortnames = [%s]", 
          paste0(paste0("'",abbreviate(names(dat)),"'"), collapse = ",")),
  sprintf("  var tooltips = [%s];", 
          paste0(paste0("'",names(dat),"'"), collapse = ",")),
  "  for(var i=0; i<ncols; i++){",
  "    $('th:eq('+i+')',thead).attr('title', tooltips[i]).text(shortnames[i]);",
  "  }",
  "}"
)

datatable(dat, rownames = FALSE, 
          options = list(
            headerCallback = JS(headerCallback)
          )
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-28
    • 2019-12-26
    • 2017-05-20
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多