有没有办法用图标重命名列名

Is there a way to rename column names with icons

有没有办法通过重命名向 headers 列添加图标。我试过下面

datatable((iris %>% rename(paste0('Sepal.Width',as.character(icon(name = "info-circle", lib = "font-awesome"))) = Sepal.Width)))

所以我在Sepal.Width旁边需要一个小图标,所以像上面那样试了。但我没有得到任何结果。谁能帮帮我?

您可以使用 gt 包,它接受 html 代码作为列名,icons 包提供正确的 html 代码:

library(tidyverse)
library(gt)

iris %>% 
  head() %>% 
  gt() %>% 
  cols_label(
    Sepal.Width = html(as.character(icons::fontawesome("info-circle")))
  )

reprex package (v2.0.1)

于 2022-02-23 创建

这会将图标显示为列名,但 data.frame 中的列名不会更改。考虑到在您的示例中使用 DT::datatable,我认为这就是您真正想要的。

否则,您可以使用:

colnames(iris) <- c("Sepal.Length",
                    as.character(icons::fontawesome("info-circle")), 
                    "Petal.Length", 
                    "Petal.Width", 
                    "Species")

但是显示实际图标而不是底层 html 代码会复杂得多。

也许有更简单的方法:

library(DT)
library(fontawesome)

js <- c(
  'function( thead, data, start, end, display ) {',
  sprintf(
    '  $(thead).find("th").eq(2).html(%s);',
    shQuote(paste0("Sepal Width ", as.character(fa_i("info-circle"))))
  ),
  '}'
)

dat <- iris[1:5, ]

dtable <- datatable(
  dat,
  options = list(
    headerCallback = JS(js)
  )
)
htmldeps <- dtable$dependencies
dtable$dependencies <- c(htmldeps, list(fa_html_dependency()))
dtable