我正在使用shiny::updateSliderInput
来更新滑块的标签。我希望滑块的标签使用希腊字符xi(ξ)和下标进行渲染。下标是updateSliderInput
调用的目标。
我在没有updateSliderInput
调用的情况下成功生成了标签,但正确使用withMathJax()
调用标签更新并没有达到我想要的效果。
此问题的闪亮应用程序的可重现示例是:
library(shiny)
shinyApp(ui = shinyUI(fluidPage(sliderInput("order", withMathJax("Order, \\(k\\)"), min = 3, max = 7, value = 4, step = 1),
sliderInput("iknots", "iKnots", min = 0, max = 10, value = 5, step = 1),
sliderInput("xi1", withMathJax(), min = 0, max = 10, value = 1, step = 0.1))),
server = shinyServer(function(input, output, clientData, session) {
observe({
k <- as.integer(input$order)
l <- as.integer(input$iknots)
updateSliderInput(session, "xi1", label = paste0("\\(\\xi_{", k + l, "}\\)"))
})
}))
在浏览器中初次加载应用程序时,我们有一个理想的标签,ξ 9 是正确的。
调整前两个滑块中的任何一个后,第三个滑块的标签无法按预期呈现。
我尝试在withMathJax
的{{1}}参数中使用label
但是有不良标签。将上面的updateSliderInput
行更改为
updateSliderInput
并将updateSliderInput(session, "xi1", label = withMathJax(paste0("\\(\\xi_{", k + l, "}\\)")))
设置为使sliderInput
或label = withMathJax()
成为
并更新
的标签如何在滑块标签中正确更新ξ上的下标?
答案 0 :(得分:1)
您可能需要使用renderUI
和uiOutput
来创建最后一个滑块,否则在更新标签时不会调用用于显示MathJax的javascript。
你可以这样做:
library(shiny)
shinyApp(ui = shinyUI(fluidPage(sliderInput("order", withMathJax("Order, \\(k\\)"), min = 3, max = 7, value = 4, step = 1),
sliderInput("iknots", "iKnots", min = 0, max = 10, value = 5, step = 1),
uiOutput("lastSlider"))),
server = shinyServer(function(input, output, clientData, session) {
output$lastSlider<- renderUI({
k <- as.integer(input$order)
l <- as.integer(input$iknots)
sliderInput("xi1",label = withMathJax(paste0("\\(\\xi_{", k + l, "}\\)")), min = 0, max = 10, step = 0.1,value=input$xi1)
})
}))