在 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)
}))
```
我希望看到的是这个(我在更改输入之前得到的)
在我更改 A
或 B
之后,我得到了这个
知道如何解决这个问题或我做错了什么吗?
这是一个工作示例。
确保您在浏览器上看到它。
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))
})
我有一个 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)
}))
```
我希望看到的是这个(我在更改输入之前得到的)
在我更改 A
或 B
之后,我得到了这个
知道如何解决这个问题或我做错了什么吗?
这是一个工作示例。 确保您在浏览器上看到它。
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))
})