【问题标题】:format a table with a nested column with kable()使用 kable() 格式化带有嵌套列的表
【发布时间】:2022-01-20 14:50:50
【问题描述】:

我正在制作一个 R markdown 文档,展示进行一些模拟的过程。简而言之,模拟将是两个变量的组合,每个变量都有 100 次试验。有时,我想在 .rmd 中显示一个数据框,因为正在构建模拟数据框。有时,这意味着显示一个带有嵌套列(与tidyr 嵌套)的数据框只是为了显示“看,这里有 100 件事情”。

当我使用head() 显示带有嵌套列的数据框时,嵌套列显示为带有尺寸的<list>(见图1)。见下图。我喜欢这个输出,因为我只想展示“看,这里有 100 个东西折叠了”。

但是,当我使用 kable()(出于格式原因我更喜欢它)时,它会用逗号扩展列表列,这是我不喜欢的。看这里:

有没有一种方法可以让我使用 kable 格式,但仍然让嵌套列显示为 <tibble [100 × 1]>

这里是 rmd 的 R 块:


    \```{r , message=FALSE} <- remove slash
    
    library(tibble)
    library(dplyr)
    library(tidyr)
    library(knitr)
    library(kableExtra)
    
    
    df <- tibble(
      var1 = c(1,2,3,1,2,3,1,2,3),
      var2 = c("a","a","a","b","b","b","c","c","c")
    ) %>%
      group_by(var1, var2) %>%
      slice(rep(1:n(), each = 100)) %>%
      mutate(trial = c(1:n())) %>%
      nest(data = trial)
    
    head(df)
    
    kable(head(df)) %>%
        kable_minimal() 
    \``` <- remove that slash

【问题讨论】:

    标签: r r-markdown tidyr kable kableextra


    【解决方案1】:

    也许,使用reactable

    \```{r , message=FALSE, echo = FALSE} 
    
    library(tibble)
    library(dplyr)
    library(tidyr)
    library(knitr)
    library(reactable)
    
    df <- tibble(
      var1 = c(1,2,3,1,2,3,1,2,3),
      var2 = c("a","a","a","b","b","b","c","c","c")
    ) %>%
      group_by(var1, var2) %>%
      slice(rep(1:n(), each = 100)) %>%
      mutate(trial = c(1:n())) %>%
      nest(data = trial)
    
    
    reactable(df %>% 
                  ungroup %>%
                   mutate(data = NULL), details = function(index) {
      tmp <- df$data[[index]]
      htmltools::div(style = "padding: 16px", reactable(tmp))
    
    })
    \``` 
    

    -输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-12
      • 2018-02-19
      • 1970-01-01
      • 2020-11-24
      • 2019-08-01
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多