我正在尝试将一些数学表达式包含在滑块的标签中。当滑块为静态时,它可以正常工作。但是,当通过renderUI
创建滑块时,它不起作用。
下面的代码可以正常工作,直到更改要创建的滑块数量。此时,数学模式将停止在所有动态创建的滑块中起作用。但是,数学模式仍然适用于静态滑块和其他数学文本。
library(shiny)
ui <- fluidPage(
titlePanel("Sliders..."),
withMathJax(),
mainPanel(
# Static slider
sliderInput(inputId = "slider_alpha",
label = "\\(\\alpha\\) slider",
min = 0,
max = 50,
value = 30),
# Text with math mode
uiOutput("text"),
# Number of sliders
numericInput(inputId = "number_of_sliders",
label = "Number of sliders",
min = 1,
max = 3,
value = 1,
step = 1),
# Dynamically created sliders
uiOutput("slider")
))
server <- function(input, output) {
output$text <- renderUI({
HTML("\\(\\alpha + \\beta = \\gamma\\)")
})
output$slider <- renderUI({
num <- input$number_of_sliders
sliders <- tagList(
tags$div(style = "display: inline-block; vertical-align: middle;",
sliderInput("slider_beta", "\\(\\beta\\) slider",
value = 5, min = 0, max = 50, step = 1)),
tags$div(style = "display: inline-block; vertical-align: middle;",
sliderInput("slider_gamma", "\\(\\gamma\\) slider",
value = 10, min = 0, max = 50, step = 1)),
tags$div(style = "display: inline-block; vertical-align: middle;",
sliderInput("slider_gamma", "\\(\\delta\\) slider",
value = 10, min = 0, max = 50, step = 1))
)
sliders[1:num]
})
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
根据withMathJax()
的描述,您应该每次都使用此功能,而不仅仅是在使用uiOutput()
的开始时调用此功能。
此函数将MathJax添加到页面并排版数学 内容中的表达式(如果找到)...。仅需调用 在应用中一次,除非在页面显示后呈现内容 已加载,例如通过renderUI,在这种情况下,我们必须显式调用它 每次,我们都会在输出中编写数学表达式。
如果在服务器部分的第一个withMathJax
中添加sliderInput()
,则似乎可以正常工作。
tags$div(style = "display: inline-block; vertical-align: middle;",
sliderInput("slider_beta", withMathJax("\\(\\beta\\) slider"),
value = 5, min = 0, max = 50, step = 1))