kableExtra table 中包含多个案例的方程式
Equations with multiple cases in a kableExtra table
(于 2019 年 7 月 11 日编辑以包含 group_rows()
的问题)
我正在 Markdown 文档中制作一个 table,其中将包含不同情况下的方程式。当我在 Markdown 中编写数组时,它编织成这样:
当我使用 kable()
在 table 中包含相同的等式时,数组末尾的条件被破坏:
有谁知道如何让 kableExtra tables 中的条件看起来像在 tables 之外?我希望最后的条件保持一致。手动添加空格 (0\\ \\ \\ \\ \\ a = 0 \\
) 看起来很糟糕。在继续使用 hackier 解决方案之前,我很想知道如何在 Markdown 中修复它。下面每种情况的代码。
Markdown 中的公式:
$$C_{y,a}=
\begin{cases}
0 & a=0 \
\frac{C_y N_{y,a}}{N_y^{1+}} & a>0 \
\end{cases}$$
Markdown 中 table 中的相同方程式:
**Table 1.** Population dynamics.
```{r echo = F}
Equation_number <- c(1,2)
Equation <- c("$N_{i1,y} = R_{i,y} = R_{0,i }e^{\tau_{i,y}}$",
"$C_{y,a}=
\begin{cases}
0 & a=0 \\
\frac{C_y N_{y,a}}{N_y^{1+}} & a>0 \\
\end{cases}$")
Description <- c("Initial numbers at age","Catches at age")
Population_Equations <- data.frame(cbind(Equation_number,
Equation,
Description))
colnames(Population_Equations) = c("Eq.",
"Equation",
"Description")
knitr::kable(format="html",
Population_Equations,
escape = FALSE) %>%
kable_styling()
```
提前感谢您的指导!
***** 编辑 2019 年 7 月 11 日:
上述问题已针对常规情况得到修复,但在 group_rows()
用于 table:
时会发生
knitr::kable(format="html",
Population_Equations,
escape = FALSE) %>%
group_rows(index=c("First group"=1, "Second group"=1)) %>%
kable_styling()
结果:
Session 信息:
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
Random number generation:
RNG: Mersenne-Twister
Normal: Inversion
Sample: Rounding
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 rstudioapi_0.10 knitr_1.23 magrittr_1.5 usethis_1.5.1 devtools_2.1.0 pkgload_1.0.2
[8] R6_2.4.0 rlang_0.4.0 tools_3.6.1 pkgbuild_1.0.3 xfun_0.8 sessioninfo_1.1.1 cli_1.1.0
[15] withr_2.1.2 remotes_2.1.0 htmltools_0.3.6 yaml_2.2.0 assertthat_0.2.1 digest_0.6.20 rprojroot_1.3-2
[22] crayon_1.3.4 processx_3.4.0 callr_3.3.0 fs_1.3.1 ps_1.3.0 curl_3.3 rsconnect_0.8.13
[29] testthat_2.1.1 glue_1.3.1 memoise_1.1.0 evaluate_0.14 rmarkdown_1.13 compiler_3.6.1 desc_1.2.0
[36] backports_1.1.4 prettyunits_1.0.2
更新:
正如@user2554330 所建议的那样,从 github 安装最新的开发者版本应该可以解决这个问题:
devtools::install_github("haozhu233/kableExtra")
旧答案:
当您不使用 kable_styling
时它工作正常。不幸的是,kable_styling
还没有 escape
参数。解决方法是手动替换转义符号:
myTable <- knitr::kable(format="html",
Population_Equations,
escape = FALSE) %>%
kable_styling()
myTable <- gsub("&", "&", myTable)
myTable <- gsub(">", ">", myTable)
(于 2019 年 7 月 11 日编辑以包含 group_rows()
的问题)
我正在 Markdown 文档中制作一个 table,其中将包含不同情况下的方程式。当我在 Markdown 中编写数组时,它编织成这样:
当我使用 kable()
在 table 中包含相同的等式时,数组末尾的条件被破坏:
有谁知道如何让 kableExtra tables 中的条件看起来像在 tables 之外?我希望最后的条件保持一致。手动添加空格 (0\\ \\ \\ \\ \\ a = 0 \\
) 看起来很糟糕。在继续使用 hackier 解决方案之前,我很想知道如何在 Markdown 中修复它。下面每种情况的代码。
Markdown 中的公式:
$$C_{y,a}=
\begin{cases}
0 & a=0 \
\frac{C_y N_{y,a}}{N_y^{1+}} & a>0 \
\end{cases}$$
Markdown 中 table 中的相同方程式:
**Table 1.** Population dynamics.
```{r echo = F}
Equation_number <- c(1,2)
Equation <- c("$N_{i1,y} = R_{i,y} = R_{0,i }e^{\tau_{i,y}}$",
"$C_{y,a}=
\begin{cases}
0 & a=0 \\
\frac{C_y N_{y,a}}{N_y^{1+}} & a>0 \\
\end{cases}$")
Description <- c("Initial numbers at age","Catches at age")
Population_Equations <- data.frame(cbind(Equation_number,
Equation,
Description))
colnames(Population_Equations) = c("Eq.",
"Equation",
"Description")
knitr::kable(format="html",
Population_Equations,
escape = FALSE) %>%
kable_styling()
```
提前感谢您的指导!
***** 编辑 2019 年 7 月 11 日:
上述问题已针对常规情况得到修复,但在 group_rows()
用于 table:
knitr::kable(format="html",
Population_Equations,
escape = FALSE) %>%
group_rows(index=c("First group"=1, "Second group"=1)) %>%
kable_styling()
结果:
Session 信息:
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
Random number generation:
RNG: Mersenne-Twister
Normal: Inversion
Sample: Rounding
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 rstudioapi_0.10 knitr_1.23 magrittr_1.5 usethis_1.5.1 devtools_2.1.0 pkgload_1.0.2
[8] R6_2.4.0 rlang_0.4.0 tools_3.6.1 pkgbuild_1.0.3 xfun_0.8 sessioninfo_1.1.1 cli_1.1.0
[15] withr_2.1.2 remotes_2.1.0 htmltools_0.3.6 yaml_2.2.0 assertthat_0.2.1 digest_0.6.20 rprojroot_1.3-2
[22] crayon_1.3.4 processx_3.4.0 callr_3.3.0 fs_1.3.1 ps_1.3.0 curl_3.3 rsconnect_0.8.13
[29] testthat_2.1.1 glue_1.3.1 memoise_1.1.0 evaluate_0.14 rmarkdown_1.13 compiler_3.6.1 desc_1.2.0
[36] backports_1.1.4 prettyunits_1.0.2
更新:
正如@user2554330 所建议的那样,从 github 安装最新的开发者版本应该可以解决这个问题:
devtools::install_github("haozhu233/kableExtra")
旧答案:
当您不使用 kable_styling
时它工作正常。不幸的是,kable_styling
还没有 escape
参数。解决方法是手动替换转义符号:
myTable <- knitr::kable(format="html",
Population_Equations,
escape = FALSE) %>%
kable_styling()
myTable <- gsub("&", "&", myTable)
myTable <- gsub(">", ">", myTable)