r语言 - 使用DT包中的datatable函数对NA进行排序



我试图使用DT包中的datatable函数创建一个html表,以便当我在R markdown中对数据进行排序时,缺失的行在最高数字之后排序。

例如,在下面的表中,当我按"年龄"排序时在markdown文件中,我希望将带有NA的行列在最后,以便订单为14,15,21,NA。

dat <- data.frame("Age" = c(21,15,NA,14), 
"Name" = c("John","Dora", "Max", "Sam"), 
"Gender" = c("M","F","M",NA))

DT::datatable(dat, filter = c("top"))

我试过使用"na。last = TRUE"这在数据表最初打印时有效,但是当单击列进行排序时,NA仍然在14之前。

任何帮助将非常感激!

使用rendercolumnwise选项,您可以在排序期间设置缺失值的值:

library(DT)
dat <- data.frame("Age" = c(21,15,NA,14), 
"Name" = c("John","Dora", "Max", "Sam"), 
"Gender" = c("M","F","M",NA))
render <- JS(
"function(data, type, row) {",
"  if(type === 'sort' && data === null) {",
"    return 999999;",
"  }",
"  return data;",
"}"
)
datatable(
dat, 
filter = "top",
options = list(
columnDefs = list(
list(targets = 1, render = render)
)
)
)

最新更新