使用 kable() 格式化带有嵌套列的表
Posted
技术标签:
【中文标题】使用 kable() 格式化带有嵌套列的表【英文标题】:format a table with a nested column with 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
【问题讨论】:
【参考方案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))
)
\```
-输出
【讨论】:
以上是关于使用 kable() 格式化带有嵌套列的表的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 Pandas.read_gbq 加载带有列表列的表后恢复结构?