如何使用 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));",
" }",
" }",
"}")
在将正数和负数转换为指数的直接行回调中,我将如何调整 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));",
" }",
" }",
"}")