如何渲染具有明确行高的dataTable?

时间:2017-02-23 14:08:06

标签: r datatable shiny dt

我已经在这样的任务中挣扎了几个小时: 在R Shiny我需要显示一个表,其中包含一列整数,行之间的确定(相对较大)间距

spacing函数中有renderTable()参数,但即使将其设置为最大值'l',仍然不足以达到我的目的。

我尝试使用xtable并考虑Adjust row height xtable R中的示例,但没有结果(我不了解CSS)。

我在网络上找到的最自然的方法是使用DT包以及Scroller扩展程序,但以下代码仍未提供结果

ui.R:

fluidPage(
  sidebarLayout(
    sidebarPanel(
        dataTableOutput('dtable', width = '50%') # argument 'height' does not work here
        ),
    mainPanel()
  )
)

server.R:

library(shiny)
library(DT)

function(input, output) {
output$dtable <- DT::renderDataTable({
  data.frame(SSD = c(2, 17, 19, 35))
},
extensions = 'Scroller',
options = list(
  dom = 't',
  ordering = FALSE,
  scroller = list(rowHeight = 100)
)
)
}

它的输出只给出了列名(错误的是什么?),但没有Scroller扩展名,它会显示预期的表格 - 当然间距太小......

1 个答案:

答案 0 :(得分:4)

您想使用rowCallback选项并为每一行附加一个样式:

server.R

library(shiny)
library(DT)

function(input, output) {
    output$dtable <- DT::renderDataTable({
        data.frame(SSD = c(2, 17, 19, 35))
    },
    options = list(
        dom = 't',
        ordering = FALSE,
        rowCallback = JS("function(r,d) {$(r).attr('height', '100px')}")
    )
    )
}

请注意,随着行数的增加,这可能会导致渲染时间增加