参数化的 RMarkdown 不过滤 R 中的参数

问题描述

我正在测试使用参数化的 RMarkdown,使用 c 作为参数。我正在使用 Knit with parameters 选择 ab,或者认情况下没有选择 a。 我希望获得 2 或 5 作为平均值,但我总是获得 3.5,这是全局平均值。 我在这里做错了什么?

---
title: "Parameterized RMarkdown"
output:
  html_document: default
params:
  c: "a"
---

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


```{r mean,echo=FALSE}
df <- tibble(c = c("a","a","b","b"),x = c(1,2,3,4,5,6))
mean(df$x)
```

解决方法

我们可以在提取的'params'上添加一个filter并得到'x'列的mean

library(dplyr)
df %>% 
    filter(c == params$c) %>%
    summarise(x = mean(x,na.rm = TRUE))

或使用 base R 来执行此操作

with(df,mean(x[c == params$c],na.rm = TRUE))