在 Shiny 中渲染动态方程

Render Dynamic Equations in Shiny

我有一个 shiny-document,它应该解释一些数学并在给定一些 shiny-inputs 的情况下计算结果。

如果我编写文档,一切正常,直到我更改输入并且显示 mathjax/latex 代码而不是正确的渲染方程。

一个最小的工作示例是这个 (test.Rmd)

---
output: html_document
runtime: shiny
---

```{r,,echo=F}
library(shiny)
```

```{r,echo=F}
numericInput("a", "A", value = 100, min = 0, max = 10000)
numericInput("b", "B", value = 120, min = 0, max = 10000)
a <- reactive(input$a)
b <- reactive(input$b)

renderText(withMathJax({
  formula <- "$$
\begin{split}
A &= %.0f \\
B &= %.0f 
\end{split}
$$"
  text <- sprintf(formula, a(), b())

  return(text)
}))
```

我希望看到的是这个(我在更改输入之前得到的)

在我更改 AB 之后,我得到了这个

知道如何解决这个问题或我做错了什么吗?

这是一个工作示例。 确保您在浏览器上看到它。

library(shiny)

ui <- list(
  numericInput("a", "A", value = 100, min = 0, max = 10000),
  numericInput("b", "B", value = 120, min = 0, max = 10000),
  uiOutput('out')
)

server <- function(input, output) 
{
  a <- reactive(input$a)
  b <- reactive(input$b)
  output$out <- renderUI({
    formula <- "$$
      \begin{split}
      A &= %.0f \\
      B &= %.0f 
      \end{split}
      $$"
    text <- sprintf(formula, a(), b())
    withMathJax(  
      tags$p(text)
    )
  })
}

shinyApp(ui, server)

有点晚了,但我刚刚想出了一个适用于 RMarkdown 的解决方案:


输出:html_document 运行时:闪亮

library(shiny)
numericInput("a", "A", value = 100, min = 0, max = 10000)
numericInput("b", "B", value = 120, min = 0, max = 10000)
a <- reactive(input$a)
b <- reactive(input$b)

renderUI(
  {
  formula <- "$$
\begin{split}
A &= %.0f \\
B &= %.0f 
\end{split}
$$"
  text <- sprintf(formula, a(), b())
  
  withMathJax(helpText(text))
})