如何从 R 中的 str() 函数生成 "pretty" 输出

How to generate "pretty" output from the str() function in R

我有一个中等大小的数据集,它有 1000 行 x 81 列。我想使用 str() 的输出,但我想以“更漂亮”的方式呈现它。我试过这样的事情:

df %>% str() %>% kableExtra::kbl() %>% kableExtra::kable_minimal()

tbl_summary(as.data.frame(str(df)))

但都不起作用。我没有嫁给 str() 或任何特定的包裹,但这就是我想要的那种总结。

最后,这是为了生成一个 HTML 文件,但我希望它也能处理 PDF 输出。

关于如何做到这一点有什么想法吗?

更新二: 这可以利用这个要点 devtools::source_gist('4a0a5ab9fe7e1cf3be0e')

来实现
<devtools::source_gist('4a0a5ab9fe7e1cf3be0e')>

  print(strtable(iris, factor.values=as.integer), na.print='') %>% 
    kable() %>% 
    htmlTable()

更新一: 你可以延长:

data.frame(variable = names(iris),
           class = sapply(iris, typeof),
           levels = sapply(iris, class),
           first_values = sapply(iris, function(x) paste0(head(x),  collapse = ", ")),
           levels_values = sapply(iris, function(x) paste0(unique(x), collapse =", ")),
           row.names = NULL) %>% 
  kable() %>% 
  htmlTable()

第一个回答: 像这样使用 iris 数据集:

library(knitr)
library(magrittr)
library(htmlTable)

data.frame(variable = names(iris),
           classe = sapply(iris, typeof),
           first_values = sapply(iris, function(x) paste0(head(x),  collapse = ", ")),
           row.names = NULL) %>% 
  kable() %>% 
  htmlTable()

skimrgt(或 kable,或 flextable,或 DT,或许多其他 table 包)也可以在这里工作:

mtcars |>
  skimr::skim() |>
  gt::gt()