如何在knitr中对齐列标题和内容

4

我想要将knitr中列标题与其内容对齐。有什么函数可以实现吗?当我使用align = 'c'position = 'c'时,会提示错误:

未使用的参数(align="c")。

这是我的代码:

DF_3 <-structure(list(. = structure(c(11L, 6L, 7L, 8L, 13L, 5L, 4L, 2L, 12L, 3L, 1L, 10L, 9L),
                                    .Label = c("B", "D", "E", "F", "G", "H", "H", "H", "I", "J", "M", "N", "V"), class = "f"),
                      HEV.pos = structure(c(3L, 8L, 1L, 6L, 2L, 9L, 8L, 10L, 7L, 3L, 8L, 4L, 5L),
                                          .Label = c("1 (2)", "15", "16", "19", "20", "24", "26", "4 (7)", "6 (11)", "7 (13)"), class = "factor"),
                      HEV.neg = structure(c(9L, 2L, 7L, 1L, 6L, 1L, 7L, 10L, 5L, 4L, 8L, 3L, 5L),
                                          .Label = c("10 (28)", "12 ", "15 ", "17", "18 ", "19 ", "2 ", "4", "7", "9"), class = "factor")),
                 class = "data.frame", row.names = c(NA, -13L)) 


library(knitr)
library(kableExtra)
library(dplyr)

kable(DF_3, format = "html") %>% 
  kable_styling(bootstrap_options = "striped") %>%
  row_spec(1, bold = T) %>% 
  row_spec(6, bold = T) %>%
  column_spec(1, bold = T)

我猜你是在提到kable函数?你能提供一个最小化的例子,让我们可以重现这个问题吗?最后,表格的输出格式是HTML还是PDF? - Michael Harper
你好Mikey。是的,这是kable函数。输出是一个表格。我的表格中的数字靠左对齐,由于我有一个很长的标题,美观度看起来有点奇怪。kable(DF_3) %>% kable_styling(bootstrap_options = "striped") %>% row_spec(1, bold = T) %>% row_spec(6, bold = T) %>% column_spec(1, bold = T) %>% add_header_above(c("." = 1, "男性" = 3, "女性" = 3)) 谢谢。 - Alexandre Johannsen
我已将上述代码添加到问题中。但是,这仍然不是一个最小示例,因为我们无法访问您的DF_3。您能否将dput(DF_3)的输出添加到您的问题中? - Michael Harper
结构(列表)(. = 结构(c(11L,6L,7L,8L,13L,5L,4L, 2L,12L,3L,1L,10L,9L),.Label = c(“ B”,“ D”, “ E”,“ F”,“ G”,“ H”,“ H”,“ H”,“ I”,“ J”,“ M”,“ N”,“ V”),类=“ f”),HEV.pos = 结构(c(3L,8L,1L,6L,2L,9L,8L,10L,7L,3L,8L,4L,5L),.Label = c(“ 1(2)”,“ 15”,“ 16”,“ 19”,“ 20”,“ 24”,“ 26”,“ 4(7)”,“ 6(11)”,“ 7(13)”),类=“因素”),HEV.neg = 结构(c(9L,2L,7L,1L,6L,1L,7L,10L,5L,4L,8L,3L,5L),.Label = c(“ 10(28)”,“ 12”,“ 15”,“ 17”,“ 18”,“ 19”,“ 2”,“ 4”,“ 7”,“ 9”),类=“因素”)),类=“数据帧”,行名= c(NA,-13L)) - Alexandre Johannsen
1个回答

9

不清楚您尝试在哪里使用align参数。但是,必须将其提供给kable函数。函数文档说明如下:

*列对齐:一个由' l '(左对齐)、' c '(居中)和/或'r'(右对齐)组成的字符向量。默认情况下,如果align = NULL,则数字列右对齐,其他列左对齐。如果length(align) == 1L,则该字符串将扩展为单个字母的向量,例如'clc'变成c('c','l','c'),除非输出格式为LaTeX。

以下是一些示例:

knitr::kable(mtcars[1:5, 1:5], caption = "Left Aligned")

enter image description here

knitr::kable(mtcars[1:5, 1:5], align = "c", caption = "Center Aligned")

enter image description here

knitr::kable(mtcars[1:5, 1:5], align = c("c", "l", "r", "c", "c"), caption = "Mixed Aligned")

enter image description here


当我尝试设置:caption =“居中对齐”时,出现错误: Error in htmlTable_styling(kable_input, bootstrap_options = bootstrap_options, : unused argument (caption ="居中对齐") - Alexandre Johannsen
你似乎把 knitr::kable 命令放到了 kable_styling 函数里?你是在复制我的示例格式吗? - Michael Harper
终于完成了。我所要做的就是在文件名后面添加align="c",caption="居中对齐"。非常感谢。 - Alexandre Johannsen
太好了,如果您满意的话,可以给答案点赞并标记为已接受吗?https://stackoverflow.com/help/someone-answers - Michael Harper
在我的列标题中,如果有一个以上的单词,它会在单词之间加上句点(.)而不是空格。我该怎么改变它?谢谢。 - Alexandre Johannsen
请查看函数文档:https://www.rdocumentation.org/packages/knitr/versions/1.20/topics/kable。您可以指定“col.names”。 - Michael Harper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接