如何使用R标记DataTable结果中的最后一行

max*_*x04 1 r shiny dt

我想标记(例如粗体)使用 DT 包生成的数据表中的最后一行。假设我们有一个包含 iris 数据集的表:

library(DT)
datatable(iris)
Run Code Online (Sandbox Code Playgroud)

结果: 在此处输入图片说明

所以我们有 150 行,我只想加粗150 行

编辑:@BigDataScientist 让我清除这一点。我有这个:

 output$tbl <- 
    DT::renderDataTable(
      data() %>% # let's say iris data - it doesn't matter
      bind_rows(summarise(data(), SUM = "SUM", A = sum(A), B = sum(B), 
                           C = sum(C), D = sum(D), 
                           E = sum(E), F = sum(F))) %>%
      mutate(SUM = rowSums(.[2:6])),
    extensions = 'Buttons', 
    options = list(
      dom = 'Blfrtip',
      lengthMenu = list(c(-1, 5, 10, 15, 20, 25), c('All', '5', '10', '15', '20', '25')),
      buttons = list('copy',
                     list(extend = 'excel',
                          filename = 'report'),
                     list(extend = 'pdf',
                          filename = 'report'),
                     'print'),
     rownames = FALSE,
     server = FALSE
    ) %>%
    formatStyle(
     target = "row",
     fontWeight = styleEqual(dim(.)[1], "bold")
    )
 )
Run Code Online (Sandbox Code Playgroud)

所以,我想在最后一行添加粗体;在这种情况下,列的总和;到这条管道,所以一切都将是一件(一个管道)。

Big*_*ist 5

如果您稍微调整一下代码,此页面将对您有所帮助:

formatStyle(
  datatable(iris), 0, target = "row",
  fontWeight = styleEqual(dim(iris)[1], "bold")
)
Run Code Online (Sandbox Code Playgroud)

编辑:还要求(另外)将数据作为reactive()Shiny 中的管道传递。好吧,我只能提供一个解决方法。我对管道不太熟悉,尤其是如何传递几个参数。

shinyApp(
  ui = fluidPage(fluidRow(column(12, DT::dataTableOutput('tbl')))),
  server = function(input, output) {
    irisReact <- reactive(iris)
    dimIrisReact <- reactive(dim(iris)[1])    
    output$tbl = DT::renderDataTable(
      irisReact() %>% datatable() %>% formatStyle(
        0, target = "row",
        fontWeight = styleEqual(dimIrisReact(), "bold")
      )
    )
  }
)
Run Code Online (Sandbox Code Playgroud)