kableExtra column_spec 错误 - 也许 dplyr 总结

kableExtra column_spec error - maybe dplyr summarise

我在使用 kableExtra column_widths 时遇到了奇怪的行为,我不确定这是由于 kableExtra 的最新版本还是由于 dplyr 的汇总函数中新实现的“groups”参数。

如果我创建这样的数据框...

 Summary <- mtcars %>% 
            group_by(cyl, gear, carb) %>% 
            summarise(count = n(), .groups = "keep") %>% 
            arrange(desc(cyl))

然后尝试像这样使用 kableExtra 将数据框制成表格...

 kable((Summary), caption = "mtcars Data Summary\n", align = c('l','l','c','c')) %>%
                  kable_styling(bootstrap_options = c("striped","hover"),full_width = FALSE, position = "left") %>% 
                  collapse_rows(columns = 1, valign = "top") %>% 
                  column_spec(1, width = "3cm") %>% column_spec(2, width = "3cm") %>% 
                  column_spec(3, width = "2cm") %>% column_spec(4, width = "2cm")

我收到这个错误 -

Error in xml_children(x)[[search]] : subscript out of bounds

在尝试为不存在的列指定列宽的上下文中,我完全理解这个错误,但是由 summarize 函数创建的这个数据框显然包含 4 列...

行数:12
列数:4
组:气缸、齿轮、碳水化合物 [12]
$ 圆柱 8, 8, 8, 8, 8, 6, 6, 6, 4, 4, 4, 4
$ 齿轮 3, 3, 3, 5, 5, 3, 4, 5, 3, 4, 4, 5
$ 碳水化合物 2, 3, 4, 4, 8, 1, 4, 6, 1, 1, 2, 2
$ 计数 4, 3, 5, 1, 1, 2, 4, 1, 1, 4, 4, 2

所以我不明白这个错误是怎么发生的。另外,如果我删除列宽 设置第 4 列,然后按预期输出 table(减去所需的宽度 第 4 列)

我想知道这是由于最近更新了 kableExtra(现在是 1.3.1)还是由于 dplyr summarize(现在是 1.0.2)中的新“.groups”参数 - 但我试过了.groups = "..." 的所有有效值均未成功。

最后添加collapse_rows函数

library(kableExtra)

Summary <- mtcars %>% 
            group_by(cyl, gear, carb) %>% 
            summarise(count = n(), .groups = "keep") %>% 
            arrange(desc(cyl))

Table <- kbl(Summary, caption = "mtcars Data Summary\n", align = c('l','l','c','c')) %>%
         kable_styling(bootstrap_options = c("striped","hover"),full_width = FALSE, position = "left") %>% 
         column_spec(1, width = "3cm") %>% column_spec(2, width = "3cm") %>% 
         column_spec(3, width = "2cm") %>% column_spec(4, width = "2cm")

Table <- Table %>% 
         collapse_rows(columns = 1, valign = "top")