Могу ли я ссылаться на таблицу, созданную с помощью table1, в RMarkdown? - PullRequest
0 голосов
/ 07 мая 2020

Я использую функцию table1::table1(), чтобы создать таблицу, которую я хочу в своей статье, но я не вижу, как ссылаться на таблицу во всем документе. Есть ли способ ссылаться на таблицу, созданную с помощью table1 (), используя синтаксис вроде: \@ref(tab:x) в R Markdown?

1 Ответ

2 голосов
/ 07 мая 2020

Это возможно, но это немного сложно.

Проблема в том, что пакет table1 не поддерживает метки в форме, которую ищет Pando c, поэтому вам нужно указать их вручную. Однако table1 отмечает свой вывод таким образом, чтобы Pando c игнорировал добавления, которые вы должны сделать. Таким образом, вам нужно сделать два обходных пути в следующем:

  • Добавьте заголовок в таблицу, используя аргумент caption для table1().
  • В начале заголовка, включить специальный код, например (\\#tab:thetablename), где вы заменяете thetablename уникальной строкой по вашему выбору.
  • Оберните вызов функции table1() в knitr::asis_output().

Используя один из примеров со страницы справки ?table1,

```{r echo=FALSE}
library(table1)
dat <- expand.grid(id=1:10, sex=c("Male", "Female"), treat=c("Treated", "Placebo"))
dat$age <- runif(nrow(dat), 10, 50)
dat$age[3] <- NA  # Add a missing value
dat$wt <- exp(rnorm(nrow(dat), log(70), 0.2))

label(dat$sex) <- "Sex"
label(dat$age) <- "Age"
label(dat$treat) <- "Treatment Group"
label(dat$wt) <- "Weight"

units(dat$age) <- "years"
units(dat$wt) <- "kg"
knitr::asis_output(table1(~ sex + age + wt | treat, data=dat,
                          caption = "(\\#tab:thetab)The caption"))
```

, где последний оператор содержит обе модификации. Это дает результат (в формате bookdown::html_document2), который выглядит следующим образом: screenshot

, и я мог бы ссылаться на таблицу по номеру, используя \@ref(tab:thetab) в других частях текста.

...