首页 > 解决方案 > 括号中的整数在 RMarkdown 脚本的 kable 表中被强制转换为不寻常的格式

问题描述

我有一个基本的数据框/小标题,如下所示:

  Variable                  `Attended Patients` `Programme Average (Weighted Mean/%)`
  <chr>                     <chr>               <chr>                                
1 Less than 'O' level       17149 (56.7)        (56.9)                               
2 'O' level                 9419 (31.2)         (31)                                 
3 'A' level                 2821 (9.3)          (9.3)                                
4 University/college        680 (2.2)           (2.3)                                
5 University degree         132 (0.4)           (0.5)                                
6 Postgraduate/professional 26 (0.1)            (0.1)  

我想在 RMarkdown 脚本中可视化。通过内置的 RStudio 查看器,表格看起来很好:

foo %>% knitr::kable() %>%
  kableExtra::kable_styling(c("striped", "condensed"), full_width = T) 

在此处输入图像描述

但是,当我想在 RMarkdown 脚本中创建表时,“O 级变量”的程序平均值已删除其括号并在末尾添加了一个小数,我无法确定原因。

在此处输入图像描述

示例 RMarkdown 脚本和表格:

---
title: "Untitled"
output: html_document
---

```{r test, echo = F}
library(knitr)
library(tidyverse)
library(kableExtra)

foo <- structure(
  list(
    Variable = c(
      "Less than 'O' level", "'O' level", "'A' level", "University/college", "University degree", "Postgraduate/professional"),
    `Attended Patients` = c("17149 (56.7)", "9419 (31.2)", "2821 (9.3)", "680 (2.2)", "132 (0.4)", "26 (0.1)"),
    `Programme Average (Weighted Mean/%)` = c("(56.9)", "(31)", "(9.3)", "(2.3)", "(0.5)", "(0.1)")
  ),
  row.names = c(NA, -6L),
  class = c("tbl_df", "tbl", "data.frame")
)

foo %>% kable() %>%
  kable_styling(c("striped", "condensed"), full_width = T) 
```

标签: rr-markdownkablekableextra

解决方案


问题是这(31)是 Pandoc Markdown 用来指示有序列表的方式之一。要禁用此功能,请将这些行放在您的 YAML 标头中:

output: 
  html_document:
    md_extensions: "-fancy_lists"

这意味着您需要对文档中的所有有序列表使用简单格式,即数字后跟句点。

编辑添加:

如果您想在文档的其他地方使用花哨的列表语法,您可以使用反斜杠(必须是 R 字符串中的双反斜杠)转义括号,例如"(31)"将变为"\\(31)".


推荐阅读