R kableExtra 两个中心对齐:一个用于带换行符的列,另一个用于其他
R kableExtra two center alignments: one for columns with linebreaks and another for others
所需输出
使用 R kableExtra
,我想在 PDF 和 HTML 输出中创建以下 table 格式(至少存在换行符、居中和 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\mathcal{S}} y_{ij}$"),
align = "c"),
escape = FALSE,
align = "ccccc"
) %>%
kable_styling(latex_options = c("striped","hold_position"))
但是,HTML 输出如下所示,其中缺少第三和第四列名称。
问题
我们如何在不借助条件编码(例如,is_html_output()
/is_latex_output()
)的情况下使用单个代码实现两种输出?
这里有个小问题
库 kableExtra
不适用于“HTML-mode”中的 \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
,我想在 PDF 和 HTML 输出中创建以下 table 格式(至少存在换行符、居中和 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\mathcal{S}} y_{ij}$"),
align = "c"),
escape = FALSE,
align = "ccccc"
) %>%
kable_styling(latex_options = c("striped","hold_position"))
但是,HTML 输出如下所示,其中缺少第三和第四列名称。
问题
我们如何在不借助条件编码(例如,is_html_output()
/is_latex_output()
)的情况下使用单个代码实现两种输出?
这里有个小问题
库 kableExtra
不适用于“HTML-mode”中的 \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"))
你应该每次都确定你的宽度(有时是每次输出),这有点乏味。
每个解决方案都有一些水下岩石,所以我们必须妥协:(