如何使用 rowcallback toExponential(2) 避免由于 NaN 或列中的其他非数值导致的错误

How to avoid errors due to NaN, or other non numerical values in a column with rowcallback toExponential(2)

在将正数和​​负数转换为指数的直接行回调中,我将如何调整 javascript 以便它跳过包含 NaN 值的列中的行? 理想情况下,我还想自动化解决方案以在检测到日期列时跳过日期列,因为日期列的位置可能取决于用户在我的 R Shiny

中输入的数据框

我目前的table选项是:

mtcars[1,5] <- NaN
mtcars[6,7] <- NaN

        Table_opts <- list(
          dom = 'frtipB',
          searching = F,
          pageLength = 50,
          searchHighlight = TRUE,
          colReorder = TRUE,
          fixedHeader = TRUE,
          buttons = c('copy', 'csv'),
          paging    = TRUE,
          columnDefs = list(list(className = 'dt-left', targets = '_all')),
          deferRender = TRUE,
          rowCallback = JS(
            "function(row, data) {",
            "for (i = 3; i < data.length; i++) {",
            "$('td:eq('+i+')', row).html(data[i].toExponential(2));",
            "}",
            "}")
        )
        DT::datatable(mtcars,  
        extensions = c('Buttons', 'ColReorder', 'FixedHeader', 'Scroller'),
        selection = c('single'),
        rownames = FALSE, 
        options = Table_opts
        )

应该这样做:

  rowCallback = JS(
    "function(row, data) {",
    "  for (i = 3; i < data.length; i++) {",
    "    var x = data[i];",
    "    if(!isNaN(parseFloat(x))){",
    "      $('td:eq('+i+')', row).html(x.toExponential(2));",
    "    }",
    "  }",
    "}")