我正在使用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
答案 0 :(得分:0)
我对R 非常 新,因此我不确定您问题的根源,但是最近我也遇到了同样的问题。使用df$var <- currency(df$var, digits = 0L)
格式化数字列后,无法过滤rmd html输出中的任何数据表列。 (而且格式也没有显示在数据表中……糟糕)。
我摆脱了货币格式,然后过滤器工作正常。
因此,可能是变量值的某些格式导致过滤器失败。 (尽管似乎无法格式化值和进行过滤似乎很不高兴,但我还是新手,可能做错了...)我希望我能帮助您确定可能格式化罪魁祸首...但是也许这是一个开始。
(也请检查this link中的红色框,其中列出了DT扩展名和列过滤器的已知问题。)