在 R Markdown 中有条件地显示带有变量的数学公式

Conditionally display math formulas with variables in R Markdown

我在使用 R markdown 中的变量渲染公式时遇到问题。 这是我使用的变量(简单示例):

```{r, include=FALSE}
series <- c(1, 2, 3, 4)
count <- leng(series)
sum <- sum(series)
sum2 <- sum(series^2)
sq_formula <- TRUE

我的问题是使用 knitr 在 Rmd(输出 = Word)数学表达式中打印,例如:

$$S = \frac{\sum{S}}{n} = \frac{`r sum`}{`r count`} = `r mean(series)`$$

如果sq_formula为假,否则应该是:

$$S = \frac{\sum{S^2}}{n} = \frac{`r sum2`}{`r count`} = `r sum2 / count`$$

有一种方法可以在R块中编写公式并按条件打印,例如:

```{r, include=FALSE}
formula1 <- '$$ \overline{S} = \frac{\sum{S}}{n} = \frac{\sum{`r sum`}{`r count`}}$$'
formula2 <- '$$ \overline{S} = \frac{\sum{S^2}}{n} = \frac {\sum{`r sum2`}}{`r count`}$$'


`r if (sq_formula <- TRUE) {formula1} else {formula2}`

但我无法在块中插入 r sumr count 等变量。 我也尝试用 sprintf 函数来处理这个问题,但还没有找到一种方法来用数学符号在字符串中插入变量。因此,我将不胜感激。

sprintf 有什么问题?你做不到吗

formula1 <- sprintf(
  '$$ \overline{S} = \frac{\sum{S}}{n} = \frac{\sum{%s}{%s}}$$',
  sum, count
)