Целое число в скобках приводится в необычный формат в таблице kable в скрипте RMarkdown - PullRequest
1 голос
/ 08 января 2020

У меня есть базовый c фрейм данных / таблица, отображаемый как:

  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) 

enter image description here

Однако, когда я затем хочу создать таблицу в сценарии RMarkdown для среднего значения по программе для «переменной уровня O» скобки сняты, а в конце добавлена ​​десятичная дробь, поэтому я не могу понять, почему.

enter image description here

Пример сценария и таблицы 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) 
```

1 Ответ

2 голосов
/ 08 января 2020

Проблема в том, что (31) - это один из способов, которым Pando c Markdown использует для обозначения упорядоченного списка. Чтобы отключить это, поместите эти строки в заголовок YAML:

output: 
  html_document:
    md_extensions: "-fancy_lists"

Это будет означать, что вам нужно использовать простой формат для всех упорядоченных списков в документе, то есть число, за которым следует точка.

Отредактировано, чтобы добавить:

Если вы хотите использовать необычный синтаксис списка в другом месте документа, вы можете избежать скобок, используя обратную косую черту sh (которая должна быть двойная обратная коса sh в строке R), например "(31)" станет "\\(31)".

...