6  Quarto 书稿中的表格的处理

章将通过具体的示例展示浮动对象“表格”的标签与引用技巧.

6.1 表格示例1:由数据生成表格

代码

#| label: tbl-mtcars
#| tbl-cap: "mtcars数据的前5行."
library(knitr)
kable(head(mtcars[, 1:5], 10))

输出为

表 6.1: mtcars数据的前5行.
注释

表格的标签由R代码块中的label: tbl-xxx给出, 其中tbl是关键字.

6.2 表格示例2: 由数据框构造表格

代码

#| label: tbl-tab3-2
#| tbl-cap: '遗传连接模型例子中观测到的频数 $y_i$ 和频率 $p(y_i|\pi)$,$i=1, \dots ,4$,197个动物.'
#| echo: FALSE
#| results: "asis"
tab.pis <- data.frame(
  C = c("Frequency $y_i$", "Probability $p(y_i\\mid\\pi)$"),
  V1 = c("125", "$\\frac{1}{2}+\\frac{\\pi}{4}$"),
  V2 = c("18","$\\frac{1}{4}(1-\\pi)$"),
  V3 = c("20","$\\frac{1}{4}(1-\\pi)$"),
  V4 = c("34","$\\frac{1}{4}$")
)
names(tab.pis) <- c("Category", "1", "2", "3", "4") 

knitr::kable(tab.pis, escape = FALSE)

输出为

表 6.2: 遗传连接模型例子中观测到的频数 yi 和频率 p(yi|π)i=1,,4,197个动物.
Category 1 2 3 4
Frequency yi 125 18 20 34
Probability p(yiπ) 12+π4 14(1π) 14(1π) 14
注释

表格中的题图通过tbl-cap:由文本引用生成.

6.3 表格示例3: 由markdwon表格直接生成

INLA可处理的分布/似然有60种, 仅列出了其中的一部分.


| **Value**  | **Likelihood** |
|------------|----------------|
| `poisson`  | Poisson        |
| `binomial` | Binomial       |
| `t`        | Student's t    |
| `gamma`    | Gamma          |

: `INLA`提供的一些似然. {#tbl-liks}

输出为

表 6.3: INLA提供的一些似然.
Value Likelihood
poisson Poisson
binomial Binomial
t Student’s t
gamma Gamma
注释
  1. 表格中%\\%
  2. 表格中latex命令用\\代替\
  3. 前二种方法中表格的标签由R代码块中的’label:’给出.

6.4 markdown子表的并置

::: {#tbl-panel layout-ncol="2"}
| Col1 | Col2 | Col3 |
|------|------|------|
| A    | B    | C    |
| E    | F    | G    |
| A    | G    | G    |

: 第一个表格 {#tbl-first}

| Col1 | Col2 | Col3 |
|------|------|------|
| A    | B    | C    |
| E    | F    | G    |
| A    | G    | G    |

: 第二个表格 {#tbl-second}

二个子表的并置
:::

输出为

表 6.4: 二个子表的并置
(a) 第一个表格
Col1 Col2 Col3
A B C
E F G
A G G
(b) 第二个表格
Col1 Col2 Col3
A B C
E F G
A G G

6.5 数据子表的并置与堆叠

R的代码块选项中设置tbl-subcap: truetbl-subcap加上子表的图例,并添加layout-ncol: 2就可获得二个子表的并置.

#| label: tbl-tables
#| tbl-cap: "两个表格并置示例2"
#| tbl-subcap:
#|   - "Cars数据"
#|   - "Pressure数据"
#| layout-ncol: 2

library(knitr)
kable(head(cars))
kable(head(pressure))

输出为

表 6.5: 两个表格并置示例2

类似地,通过选项layout-nrow: 2就可将二个子图堆叠起来.

#| label: tbl-tables-by-row
#| tbl-cap: "两个表格堆叠示例"
#| tbl-subcap:
#|   - "mtcars数据"
#|   - "iris数据"
#| layout-nrow: 2

library(knitr)
kable(head(mtcars))
kable(head(iris))

输出为

表 6.6: 两个表格堆叠示例

6.6 表格引用

表格引用由代码块的标签(设为label)引用实现, 并带前缀tbl-, 由@tbl-label实现. 例如

本章共出现二个表格并置的示例,即 表 @tbl-panel, 表 @tbl-tables 和  @tbl-second.

输出为:

本章共出现二个表格并置的示例,即 表 , 表 .