DT包中的列过滤器在RMarkdown HTML中无法正常工作。

5
我正在使用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
)))

```

这是输出的样子,但当我在列过滤框中开始输入时,什么也不会发生。输出
2个回答

1

我对R非常陌生,所以不确定你的问题根源在哪里,但我最近也遇到了同样的问题。当我使用df$var <- currency(df$var, digits = 0L)格式化我的数字列后,我无法过滤我的rmd html输出中的任何datatable列。(并且这种格式化在datatable中也没有显示...)

我取消了货币格式,然后过滤器就可以正常工作了。

因此可能是某些变量值的格式化导致过滤器失败。(虽然不能同时格式化值和过滤,但这似乎有点令人失望,但再次强调,我很新,可能做错了...)我希望我能帮助你找到可能的格式化罪魁祸首......但也许这只是一个开始。

(还要查看this link中的红框,其中列出了DT扩展和列过滤器的已知问题。)


0

我不得不从我的DT选项中删除autoWidth = TRUE,以便在我的Rmarkdown HTML文件中使过滤工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接