Запустить выбранные куски из одного Rmd в другом - PullRequest
0 голосов
/ 26 октября 2018

Я провел анализ в исходном файле Rmd и хотел бы связать чистую версию из окончательного файла Rmd, используя только несколько кусков из источника.Я видел несколько ответов, касающихся извлечения всех фрагментов из исходного Rmd в Исходный код из файла Rmd в другом Rmd и Как получить исходный файл R Markdown, например `source ('myfile).r ') `.Я разделяю озабоченность этих постов тем, что я не хочу портировать отдельный файл .R, который, кажется, является единственным способом, которым read_chunk работает.

Я думаю, что я нахожусь в точкегде я могу импортировать исходный Rmd, но теперь я не уверен, как вызвать конкретные куски из него в окончательном Rmd.Вот воспроизводимый пример:

SourceCode.Rmd

---
title: "Source Code"
output:
  pdf_document:
    latex_engine: xelatex
---

```{r}
# Load libraries
library(knitr) # Create tables
library(kableExtra) # Table formatting
# Create a dataframe
df <- data.frame(x = 1:10,
                 y = 11:20,
                 z = 21:30)
```

Некоторый пояснительный текст

```{r table1}
# Potentially big block of stuff I don't want to have to copy/paste
# But I want it in the final document
kable(df, booktabs=TRUE,
      caption="Big long title for whatever") %>%
  kable_styling(latex_options=c("striped","HOLD_position")) %>%
  column_spec(1, width="5cm") %>%
  column_spec(2, width="2cm") %>%
  column_spec(3, width="3cm")
```

[Некоторый другой текст, плюс кучадругие куски мне не нужны, чтобы кто-то видел в чистой версии.]

```{r}
save(df, file="Source.Rdata")
```

FinalDoc.Rmd

---
title: "Final Doc"
output:
  pdf_document:
    latex_engine: xelatex
---

```{r setup, include=FALSE}
# Load libraries and data
library(knitr) # Create tables
library(kableExtra) # Table formatting
opts_chunk$set(echo = FALSE)
load("Source.Rdata")
```

Насколько я могу судитьэто, вероятно, лучший способ загрузить SourceCode.Rmd (из первого связанного источника выше):

```{r}
options(knitr.duplicate.label = 'allow')
source_rmd2 <- function(file, local = FALSE, ...){
  options(knitr.duplicate.label = 'allow')

  tempR <- tempfile(tmpdir = ".", fileext = ".R")
  on.exit(unlink(tempR))
  knitr::purl(file, output=tempR, quiet = TRUE)

  envir <- globalenv()
  source(tempR, local = envir, ...)
}

source_rmd2("SourceCode.Rmd")
```

На данный момент, я не знаю, как вызвать конкретный блок table1 от SourceCode.Rmd.Я попробовал следующее в соответствии с инструкциями здесь , но безуспешно:

```{r table1}
```

```{r}
<<table1>>
```

Первый, похоже, ничего не делает, а второй выдает ошибку unexpected input in "<<".

...