【问题标题】:Conditionally display math formulas with variables in R Markdown在 R Markdown 中有条件地显示带有变量的数学公式
【发布时间】:2021-08-06 15:40:21
【问题描述】:

我在使用 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 为 FALSE,否则应为:

$$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 函数来处理该问题,但还没有找到一种方法以数学符号将变量插入字符串中。因此,我将不胜感激。

【问题讨论】:

    标签: r math markdown knitr


    【解决方案1】:

    sprintf 有什么问题?不能吗

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

    【讨论】:

    • 看来我对sprintf函数不是很熟悉。你的例子很有帮助,谢谢。像这样写:``` formula1
    猜你喜欢
    • 2014-10-13
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2012-09-12
    相关资源
    最近更新 更多