Запускать выбранные фрагменты из одного Rmd в другой

Я провел анализ в исходном файле 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 "<<".

Я предлагаю так же, как этот ответ, вы можете сохранить результаты (рисунки, таблицы и т.д.), а также загрузить результаты и выполнить форматирование в своем отчете.

TC Zhang 26.10.2018 02:57

@TCZhang, да, если бы все, что я хотел сделать, это загрузить определенные объекты, это было бы хорошо. На самом деле я хочу ввести более сложные фрагменты (таблицы kable, графики и т. д.), Которые я уже проработал в исходном коде. Я сделал пример более сложным, чтобы продемонстрировать то, что мне нужно.

bcarothers 26.10.2018 16:14

@TCZhang, ах, хорошо - после дальнейшей работы мне просто нужно сделать еще один шаг и вставить отформатированную таблицу в объект в источнике, сохранить ее, а затем вызвать этот объект в финале. Это работает - спасибо!

bcarothers 26.10.2018 16:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
3
786
1

Ответы 1

Я написал функцию source_rmd_chunks(), которая генерирует чанк (ы) по имени метки. См. суть.

Другие вопросы по теме