DT :: datatable - 格式化选定的列?

时间:2018-02-20 17:08:23

标签: r knitr r-markdown dt

您可以帮助我使用 DT :: datatable 列格式吗?我有这样的表:

DT::datatable(iris, 
          class = 'row-border stripe hover compact', 
          rownames = F, 
          autoHideNavigation = T,
          options = list(pageLength = nrow(summary.month),
                         searching = F,
                         paging = F,
                         info = F))

我需要设置:

  • 第1列:粗体,左对齐
  • 第3次coumn:大胆,对齐

我发现,我应该使用columns.ClassName,但是如何在R中设置类样式?

数据表的html输出将在R markdown文档中使用。

3 个答案:

答案 0 :(得分:3)

到目前为止,我能让它工作的唯一方法是首先手动设置HTML标记,然后使用escape = FALSE

我们在Sepal.Length HTML标记中包含bold

iris$SepalLength2 <- paste0("<b>", iris$Sepal.Length, "</b>")>

然后使用escape = FALSE以便解析HTML标记。

datatable(iris, 
          class = 'row-border stripe hover compact', 
          rownames = F, 
          autoHideNavigation = T, escape =FALSE)

enter image description here

修改

对于左/右对齐,您可以换入<p align ="left"></p>

所以:iris$SepalLength2 <- paste0('<p align ="right"><b>', iris$Sepal.Length, '</b></p>')

请注意,我既不是HTML专家,也不是这个特定库的专家,但这似乎是获得理想结果的一种方法。

答案 1 :(得分:0)

您不需要修改数据内容。相反,您可以使用rowCallback选项:

library(DT)

rowCallback <- c(
  "function(row, data, index){",
  "  $(this.api().cell(index, 0).node())",
  "    .css('text-align', 'left')",
  "    .css('font-weight', 'bold');",
  "  $(this.api().cell(index, 2).node())",
  "    .css('text-align', 'right')",
  "    .css('font-weight', 'bold');",
  "}"
)

DT::datatable(iris, 
              class = 'row-border stripe hover compact', 
              rownames = FALSE, 
              autoHideNavigation = TRUE,
              options = list(pageLength = 5,
                             searching = FALSE,
                             paging = TRUE,
                             info = FALSE, 
                             rowCallback = JS(rowCallback))
)

enter image description here

答案 2 :(得分:0)

自从最初提出这个问题以来已经有一段时间了,但是我也遇到了同样的问题。这是一个更简单的解决方案,不需要编辑源数据或调用JS,而是使用functions within the DT package itself

DT::datatable(iris, 
          class = 'row-border stripe hover compact', 
          rownames = F, 
          autoHideNavigation = T, escape =FALSE) %>% 
  formatStyle(columns = c("Sepal.Length"), fontWeight = 'bold', `text-align` = 'left') %>% 
  formatStyle(columns = c("Petal.Length"), fontWeight = 'bold', `text-align` = 'right')