首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用htmltools::withTag()在R中更改Datatable的页脚

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

Stack Overflow用户
提问于 2021-10-28 09:32:10
回答 1查看 174关注 0票数 1

我试图在一个闪亮的应用程序中更改Datatable的页脚。我可以使用以下代码复制应用程序中的错误:

代码语言:javascript
复制
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显示如下:

代码语言:javascript
复制
Error in writeImpl(text) : 
Text to be written must be a length-one character vector

但是,如果我直接将页脚的定义作为参数,那么它是有效的:

代码语言:javascript
复制
sketch <- htmltools::withTags(table(
  tableHeader(dt_test),
  tableFooter(sapply(dt_test, function(x) ifelse( (is.numeric(x)),sum(x), "" ))
  )))

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-28 10:12:41

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

这意味着有两个选项可以让您的代码工作:

htmltools::tags$...选项1:使用而不是 htmltools::withTags

代码语言:javascript
复制
library(tibble)
library(DT)

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

选项2:重命名变量

代码语言:javascript
复制
footer1 <- footer

sketch <- htmltools::withTags(table(
  tableHeader(dt_test),
  tableFooter(footer1)
))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69751593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档