Математическое выражение в динамически создаваемых ползунках - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь включить некоторые математические выражения в ярлыки слайдеров.Работает нормально, когда слайдер статичен.Однако, это не работает, когда ползунки создаются с помощью 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)

1 Ответ

0 голосов
/ 29 января 2019

Согласно описанию 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))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...