R kableExtra 两个中心对齐:一个用于带有换行符的列,另一个用于其他
Posted
技术标签:
【中文标题】R kableExtra 两个中心对齐:一个用于带有换行符的列,另一个用于其他【英文标题】:R kableExtra two center alignments: one for columns with linebreaks and another for others 【发布时间】:2022-01-18 08:19:37 【问题描述】:所需的输出
使用 R kableExtra
,我想在 PDF 和 html 输出中创建下表格式(至少存在换行符、居中和 LaTeX 方程),如下所示。
代码尝试
以下 R 代码正确呈现所需的 PDF 输出:
#-------------------
library(tidyverse)
library(kableExtra)
#-------------------
fs_dt <- tibble(
school = 1:4,
nstudents = c(1471,890,1021,1587),
nf_total = c(792,447,511,800),
nf_intv = c(25,15,20,40),
nsmokers = c(10,3,6,27)
)
fs_dt %>%
kbl(booktabs = T,
col.names = linebreak(c("School",
"No. of students",
"No. of females\n($M_i$)",
"No. of females interviewed\n($m_i$)",
"$\\sum_i\\in\\mathcalS y_ij$"),
align = "c"),
escape = FALSE,
align = "ccccc"
) %>%
kable_styling(latex_options = c("striped","hold_position"))
但是,HTML 输出如下所示,其中缺少第三和第四列名称。
问题
我们如何在不使用条件编码的情况下使用单个代码实现两种输出(例如,is_html_output()
/is_latex_output()
)?
【问题讨论】:
huxtable
解释换行符,如果可以接受的话。
【参考方案1】:
这里有个小问题。
库kableExtra
不适用于“HTML 模式”中的\n
。
你能做什么?
编织成 HTML 时,您可以将 \n
更改为 <br>
。
这并不方便,尤其是当您有很多表时(每次都将\n
更改为<br>
。
对于这种情况,您可以使用column_spec
:
#your code above
escape = FALSE,
align = "ccccc"
) %>%
column_spec(3, width = "3cm") %>%
column_spec(4, width = "5.3cm") %>% #4.8 cm for PDF!!!
kable_styling(latex_options = c("striped","hold_position"))
你应该每次都确定你的宽度(有时是每个输出),这有点乏味。
每个解决方案都有一些水下岩石,所以我们必须妥协:(
【讨论】:
以上是关于R kableExtra 两个中心对齐:一个用于带有换行符的列,另一个用于其他的主要内容,如果未能解决你的问题,请参考以下文章