3

を使用して、光沢のあるカテゴリ (数値ではなく) スライダーを作成しようとしていますsliderInputここでのディーン アタリの回答 (対数スケールのシャイニー スライダー)のおかげで、スライダーを作成できました。

ただし、スライダーを作成して、serverおよび を介して UI に渡す必要がrenderUIありuiOutputます。しかし、サーバー側sliderInputの呼び出しに移動すると、機能しなくなります。renderUI2 つの例を次に示します。最初の例はカテゴリ スライダーがどのように機能するか ( renderUI/を使用しない場合uiOutput) を示し、2 つ目はカテゴリ スライダーがどのように機能しないか ( renderUI/を使用する場合uiOutput) を示します。

動作例 (UI で作成されたスライダー)

library(shiny)
JScode <-
  "$(function() {
setTimeout(function(){
var names = ['Unrated', 'Emerging', '&nbsp;',  'Formative', '&nbsp;', '&nbsp;', 'Developed', '&nbsp;'];
var vals = [];
for (i = 0; i < names.length; i++) {
var val = names[i];
vals.push(val);
}
$('#pvalue').data('ionRangeSlider').update({'values':vals})
}, 7)})"

runApp(shinyApp(
  ui = fluidPage(
    tags$head(tags$script(HTML(JScode))),
    textOutput('texty'),
    sliderInput("pvalue",
                "PValue:",
                min = 0,
                max = 7,
                value = 0
    )
  ),
  server = function(input, output, session) {

    output$texty <- renderText({
      input$pvalue
    })
  }
))

動作しない例 ( で作成されたスライダーserver)

library(shiny)
JScode <-
  "$(function() {
setTimeout(function(){
var names = ['Unrated', 'Emerging', '&nbsp;',  'Formative', '&nbsp;', '&nbsp;', 'Developed', '&nbsp;'];
var vals = [];
for (i = 0; i < names.length; i++) {
  var val = names[i];
  vals.push(val);
}
$('#pvalue').data('ionRangeSlider').update({'values':vals})
}, 7)})"

runApp(shinyApp(
  ui = fluidPage(
    tags$head(tags$script(HTML(JScode))),
    textOutput('texty'),
    uiOutput('uu')
  ),
  server = function(input, output, session) {

    output$texty <- renderText({
      input$pvalue
    })
    output$uu <- renderUI({
      sliderInput("pvalue",
                  "PValue:",
                  min = 0,
                  max = 7,
                  value = 0
      )
    })
  }
))

でスライダーが生成されたときに、スライダーに (数値ではなく) カテゴリを表示するにはどうすればよいserverですか?

4

2 に答える 2