来自另一列的数据表工具提示

时间:2017-09-12 10:07:46

标签: r shiny dt

如何向数据表的单元格添加工具提示(或鼠标悬停弹出窗口),从另一列中提取数据?

例如,如果我在数据表中显示前三列mtcars,如何显示工具提示,其中包含我当前用鼠标悬停的汽车名称的hp(马力)数据?

similar questions on how you can display static text as a tooltip,但我找不到一种方法来显示来自另一列的数据作为工具。

#ui.R
library(shiny)
library(DT)
shinyUI(
  mainPanel(
    DT::dataTableOutput("tbl")
  )   
)    

#server.R

library(shiny)
library(DT)
shinyServer(function(input, output,session) {
  output$tbl = DT::renderDataTable(
    datatable(mtcars[, 1:3]))
}) 

1 个答案:

答案 0 :(得分:1)

要使用hp获取工具提示,您可以按如下方式修改服务器代码:

   shinyServer(function(input, output,session) {
    output$tbl <- DT::renderDataTable({
      datatable(mtcars[, 1:4], options = list(rowCallback = JS(
        "function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
        "var full_text = aData[4]",
        "$('td:eq(0)', nRow).attr('title', full_text);",
        "$('td:eq(1)', nRow).attr('title', full_text);",
        "$('td:eq(2)', nRow).attr('title', full_text);",
        "$('td:eq(3)', nRow).attr('title', full_text);",
        "}"),

        columnDefs = list(list(visible=FALSE, targets=c(4)))
      )
      )
    }) 
  }) 

JS代码将工具提示添加到前四列,其值为hp column。 这里的数据集包含hp列,但我们使用columnDefs参数隐藏该列。

希望它有所帮助!