问题描述
我正在测试使用参数化的 RMarkdown,使用 c 作为参数。我正在使用 Knit with parameters
选择 a
或 b
,或者默认情况下没有选择 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))