Как избежать ошибок из-за NaN или других нечисловых значений в столбце с rowcallback toExponential (2) - PullRequest
0 голосов
/ 28 сентября 2019

В прямом обратном вызове строк для преобразования чисел, как положительных, так и отрицательных, в экспоненциальный, как бы я отрегулировал JavaScript, чтобы он пропускал строки в столбце, которые содержат значение NaN?В идеале я также хотел бы автоматизировать решение, чтобы пропустить столбцы даты при обнаружении, так как положение столбцов даты может зависеть от пользовательского фрейма данных в моем R Shiny

Параметры таблицы, которые у меня есть на данный момент, таковы:

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
        )

1 Ответ

0 голосов
/ 29 сентября 2019

Это должно сделать это:

  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));",
    "    }",
    "  }",
    "}")
...