Проблема в том, что вы работаете против намерений kable
, используя его вне блока R:
Функция kable()
автоматически сгенерирует метку для табличной среды,это префикс tab:
плюс метка чанка.
https://bookdown.org/yihui/bookdown/tables.html
Таким образом, следующий обходной путь определенно на хакерской стороне.Используя файл foo.Rmd
с
---
output:
bookdown::pdf_document2:
toc: no
header-includes:
- \usepackage{float}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## Including Tables
You can also embed tables, for example: \@ref(tab:tw)
```{r tw, echo=FALSE}
mytable
```
You can also embed tables, for example: \@ref(tab:tw2)
```{r tw2, echo=FALSE}
mytable2
```
Referencing images is easier: \@ref(fig:plt)
```{r plt, echo=FALSE, fig.cap = 'hello', fig.height=3}
myplot
```
, этот файл можно обработать вторым файлом foo.R
:
library(knitr)
library(kableExtra)
# add the label to the options that would normally be populated from the chunk options
opts_current$append(list(label = "tw"))
mytable <- head(cars) %>% kable(format = "latex",
booktabs = T,
caption = "Demo Table",
escape = F) %>%
kable_styling(latex_options = 'HOLD_position')
opts_current$restore()
opts_current$append(list(label = "tw2"))
mytable2 <- tail(cars) %>% kable(format = "latex",
booktabs = T,
caption = "Demo Table",
escape = F) %>%
kable_styling(latex_options = 'HOLD_position')
opts_current$restore()
myplot <- ggplot(cars, aes(x = dist, y = speed)) + geom_point()
rmarkdown::render("foo.Rmd")
В принципе, эти команды можно выполнять также только наR подсказка, но я стараюсь не использовать подсказку напрямую.Кстати, я не получаю вывод (#tab)
с вашим кодом.
Тем не менее, я думаю, что имеет смысл не работать против действий kable
.Я могу понять, что может иметь смысл отделить манипулирование данными для презентации.Однако создание таблицы - это презентация с моей точки зрения.Таким образом, вместо создания таблицы извне, я бы просто создал данные извне.Чтобы сделать это конкретнее, давайте используем файл bar.Rmd
:
---
output:
bookdown::pdf_document2:
toc: no
header-includes:
- \usepackage{float}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(kableExtra)
```
## Including Tables
You can also embed tables, for example: \@ref(tab:tw)
```{r tw, echo=FALSE}
mydata %>% kable(format = "latex",
booktabs = T,
caption = "Demo Table",
escape = F) %>%
kable_styling(latex_options = 'HOLD_position')
```
вместе с файлом bar.R
:
# insert data processing here
mydata <- head(cars)
rmarkdown::render("bar.Rmd")
Это дает мне тот же вывод, и обработка данных(изначально!) отдельно от презентации.