【问题标题】:Evaluate code chunks in Rmd in different order以不同的顺序评估 Rmd 中的代码块
【发布时间】:2022-01-12 16:28:24
【问题描述】:

我有一个代码块“data_prep”,它包含在我的 Rmd 文件的末尾,但我想在开头(在标题 1 之后)显示它的结果。问题是代码块“data_prep”需要在名为“data_summary”的块之前运行(data_summary 取决于 data_prep)。

如何更改评估代码块的顺序?

---
title: "Untitled"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
```

```{r}
library(dplyr)
```

# 1

```{r data_summary, ref.label='data_prep'}
```

# 2

```{r}
df_1 <- mtcars %>% sample_n(10)
```

# 3

```{r data_prep, results='hide'}
mtcars_summary <- df_1 %>% 
  group_by(cyl) %>% 
  summarise(hp_avg = mean(hp))

mtcars_summary
```

我也尝试了以下两种变体:

```{r data_prep, echo = TRUE}
```

```{r data_summary, dependson='data_prep'}
```

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    dependson 不是这样工作的。它用于指定 块所依赖的代码块,因此如果缓存,它会在更新这些依赖项时更新。但是,RMarkdown 有一种方法可以使用缓存来做你想做的事。如果需要,我们可以缓存任何块并在更早的块中调用它。只修改了您示例中的两个相关块(其余部分保持不变),我们可以这样做:

    ```{r data_summary}
    knitr::load_cache("data_prep", "mtcars_summary")
    ```
    ## # A tibble: 3 × 2
    ##     cyl hp_avg
    ##   <dbl>  <dbl>
    ## 1     4   84.3
    ## 2     6  116. 
    ## 3     8  191
    
    ```{r data_prep, results = "hide", cache = TRUE}
    mtcars_summary <- df_1 %>% 
      group_by(cyl) %>% 
      summarise(hp_avg = mean(hp))
    
    mtcars_summary
    ```
    

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多