在R中使用htmltools::withTags()更改Datatable的页脚



我试图在闪亮的应用程序中改变一个数据表的页脚。我可以复制我在应用程序中获得以下代码的错误:

dt_test <- tibble(cntry = c("A","A","B"),
city = c("X","Y","Z"),
sales = c(1000,1500,500),
score = c(1.1234,5.1234,2.1234))
footer <- sapply(dt_test, function(x) ifelse((is.numeric(x)), sum(x), ""))
sketch <- htmltools::withTags(table(
tableHeader(dt_test),
tableFooter(footer)
))
sketch

R显示如下:

Error in writeImpl(text) : 
Text to be written must be a length-one character vector

但是如果我把页脚的定义直接作为参数,它可以工作:

sketch <- htmltools::withTags(table(
tableHeader(dt_test),
tableFooter(sapply(dt_test, function(x) ifelse( (is.numeric(x)),sum(x), "" ))
)))

不幸的是,我不能使用这种方法,因为聚合包含了许多业务逻辑,并且是在单独的函数中执行的。我哪里做错了?

问题是footer是标签的名称,即<footer>标签。因此,当在htmltools::withTags中使用footer时,您实际上是将tags$footer(这是一个函数)传递给tableFooter,而不是存储在矢量页脚中的内容。这就是为什么你会得到错误消息,这就是为什么当你直接传递定义时,你的代码可以工作的原因。

这就是说有两个选项可以使你的代码工作:

选项1:使用htmltools::tags$...代替htmltools::withTags

library(tibble)
library(DT)
sketch <- htmltools::tags$table(
tableHeader(dt_test),
tableFooter(footer)
)

选项2:重命名变量

footer1 <- footer
sketch <- htmltools::withTags(table(
tableHeader(dt_test),
tableFooter(footer1)
))

相关内容

  • 没有找到相关文章

最新更新