使用 gt 或 gtsummary 在 R-markdown 中以漂亮整洁的 table 显示 class 个变量

Display class of variables in a nice neat table in R-markdown using gt or gtsummary

我想很好地显示数据帧结构,尤其是显示列名和 class。我想做这样的事情:

str(my_df) %>% tbl_summary()

我知道那行不通,但我认为它可以解释我想做好的事情。 table 输出中有很多图像显示 class 但我无法在任何地方找到示例代码。我一直在尝试使用 gtsummary。

期望的输出是这样的...

您可以构建您想要显示的数据并使用任何漂亮的 table 显示库。

data <- setNames(stack(sapply(iris, class))[2:1], c('variable', 'class'))
data

#      variable   class
#1 Sepal.Length numeric
#2  Sepal.Width numeric
#3 Petal.Length numeric
#4  Petal.Width numeric
#5      Species  factor

gt::gt(data)

选项 1:

library(stringr)
library(tidyverse)
library(DT)

datatable(iris, colnames = str_c(names(iris), ' ', '<', map(iris, class), '>'))

选项 2:使用 DT table documentation page

library(stringr)
library(tidyverse)
library(DT)

datatable(iris, colnames = str_c(names(iris), ' ', '<', map(iris, class), '>')) %>% 
    formatStyle('Sepal.Length', fontWeight = styleInterval(5, c('normal', 'bold'))) %>%
    formatStyle(
        'Sepal.Width',
        color = styleInterval(c(3.4, 3.8), c('white', 'blue', 'red')),
        backgroundColor = styleInterval(3.4, c('gray', 'yellow'))
    ) %>%
    formatStyle(
        'Petal.Length',
        background = styleColorBar(iris$Petal.Length, 'steelblue'),
        backgroundSize = '100% 90%',
        backgroundRepeat = 'no-repeat',
        backgroundPosition = 'center'
    ) %>%
    formatStyle(
        'Species',
        transform = 'rotateX(45deg) rotateY(20deg) rotateZ(30deg)',
        backgroundColor = styleEqual(
            unique(iris$Species), c('lightblue', 'lightgreen', 'lightpink')
        )
    )

选项 3:

    datatable(cbind(names(iris), str_c( '<', map(iris, class), '>')), colnames = c('name', 'class')) 

我们可以使用 formattable

library(dplyr)
library(tidyr)
library(formattable)
iris %>%
     summarise(across(everything(), class)) %>% 
     pivot_longer(cols = everything()) %>%
     formattable::formattable(.)