renderDataTable选择包含值>的所有单元格10并突出显示

时间:2015-04-14 15:39:21

标签: jquery r datatables shiny

我正在创建一个具有用户定义的行数和数量的dataTable。列。我想循环遍历表中的所有单元格(减去第一列,其中包含名称),并在值大于10时突出显示/更改CSS.Shiny有一个很好的示例,可以定位特定列(参见下文)。我假设我需要编写某种jQuery函数?我是一个完整的jQuery新手,所以我试了一下,而且,它显然没有用(见下文)。任何帮助将不胜感激!

针对特定列的闪亮示例:

rowCallback = I(
  'function(row, data) {
    // Bold cells for those >= 5 in the first column
    if (parseFloat(data[0]) >= 5.0)
      $("td:eq(0)", row).css("font-weight", "bold");
  }'
)

我尝试编写循环遍历单元格的函数失败了:

rowCallback = I('
               function(row, data) {
               for each (i in 1:1000) {
               if (parseFloat(data[i]) > 10.0)
               $("td:eq(i)", row).css("color", "red");}
               }')

2 个答案:

答案 0 :(得分:1)

for each (i in 1:1000)看起来不像有效的JavaScript语法。以下是使用DT包的最小示例(将来不推荐使用闪亮中的DataTables函数)。如果您不熟悉JavaScript可能会有点难以理解(我们的目标是将来make it easier)。

library(shiny)
library(DT)

shinyApp(

  ui = fluidPage(dataTableOutput('foo')),

  server = function(input, output) {
    output$foo = renderDataTable({
      datatable(iris, options = list(
        rowCallback = JS(
          'function(row, data) {',
          '$("td", row).each(function(i) {',
            'if (i == 0) return; // first column is row names',
            'if (parseFloat(data[i]) >= 3.0)',
              '$(this).css("color", "red");',
          '});',
          '}')
      ))
    })
  }

)

DT rowCallback

此时要安装 DT ,您需要:

install.packages(
  c("DT", "shiny")
  type = "source",
  repos = c("http://yihui.name/xran", "http://cran.rstudio.com")
)

DT 在CRAN上后,您将能够正常安装CRAN中的所有内容。

答案 1 :(得分:1)

管理用它实现它(不安装DT):

rowCallback = I(
    'function(row, data) {
        $("td", row).each(function(i) {
            if (i == 0) return; // first column is row names
            if (parseFloat(data[i]) >= 10.0)
                $(this).css("color", "red");
        });
    }'
)