DT软件包列过滤器在RMarkdown HTML中不起作用

时间:2018-07-09 13:47:19

标签: rstudio r-markdown dt

我正在使用RMarkdown和DT包在HTML报表中创建动态表。我试图通过添加DT软件包文档中概述的[filter ='top']来添加列过滤器,以便用户可以分别搜索每列。但是,当我编织到HTML时,列级过滤器在那里,但它们不起作用。我正在使用R Studio的最新版本和DT软件包的0.4版。我在做什么错了?

 ---
 title: <b>Report</b>
 date: Updated `r format(Sys.time(), '%B %d, %Y')`
 output:
 rmarkdown::html_document:
 theme: cosmo
---

 ```{r setup, include=FALSE}
 knitr::opts_chunk$set(echo = TRUE)
 library(rmarkdown)
 library(DT)
 library(htmltools)
 library(knitr)
 ```

 ###Tab 1: Alphabetic List of Fields

```{r by.field, echo=FALSE,results="asis",warning=FALSE}

#Making the table
fieldname=binned_data$Attribute.from.EHR.database
field_def=binned_data$Definition
field_table=binned_data$Table
fieldtable=data.frame(fieldname, field_def, field_table)


print(htmltools::tagList(
datatable(
fieldtable, colnames=c(
  "Field","Definition", "Table"), 
    filter = 'top',
    options = list(autowidth = TRUE,
    order = list(list(0, 'asc')),
    columnDefs = list(list(className = 'dt-left', targets = c(0,1,2))),
      pageLength = 25, 
      lengthMenu = c(25, 50, 75, 100, 150),
      initComplete = JS("
        function(settings, json) {
        ","
        $('body').css({
        'font-family': 'Century Gothic', 'font-size': '150%'
        });
        $(this.api().table().header()).css({
        'font-family': 'Century Gothic',
        'font-size':'125%',
        'background-color': '#008000',
        'color': '#fff'
        });
        }
        ")
),rownames = FALSE
)))

```

这是输出的样子,但是当我开始在列过滤器框中键入内容时,什么也没有发生。 Output

1 个答案:

答案 0 :(得分:0)

我对R 非常 ,因此我不确定您问题的根源,但是最近我也遇到了同样的问题。使用df$var <- currency(df$var, digits = 0L)格式化数字列后,无法过滤rmd html输出中的任何数据表列。 (而且格式也没有显示在数据表中……糟糕)。

我摆脱了货币格式,然后过滤器工作正常。

因此,可能是变量值的某些格式导致过滤器失败。 (尽管似乎无法格式化值和进行过滤似乎很不高兴,但我还是新手,可能做错了...)我希望我能帮助您确定可能格式化罪魁祸首...但是也许这是一个开始。

(也请检查this link中的红色框,其中列出了DT扩展名和列过滤器的已知问题。)