如何将sliderInput默认设置为';播放';当应用程序窗口打开/刷新时

如何将sliderInput默认设置为';播放';当应用程序窗口打开/刷新时,r,animation,shiny,R,Animation,Shiny,该示例是可复制的,因此当您运行下面的代码时,您将能够看到只有单击更新滑块后,播放按钮才会响应 我想在播放按钮上添加一个条件,这样,如果用户按下播放,它将按当前控件的原样运行动画。但是,如果用户更改控件(速度和间隔),则仅当单击操作按钮时,主滑块才会更新 我已经做到了这一点,但当应用程序加载时,用户必须首先单击“更新”按钮来初始化播放按钮的反应,而这在加载应用程序时并不明显 如果应用程序在加载时默认为play,或者在play按钮上传递条件的方法也可以,我就可以了 这是我的密码: library(s

该示例是可复制的,因此当您运行下面的代码时,您将能够看到只有单击
更新滑块
后,
播放按钮
才会响应

我想在
播放按钮
上添加一个条件,这样,如果用户按下
播放
,它将按当前控件的原样运行动画。但是,如果用户更改控件(速度和间隔),则仅当单击
操作按钮时,主滑块才会更新

我已经做到了这一点,但当应用程序加载时,用户必须首先单击“更新”按钮来初始化
播放按钮的反应,而这在加载应用程序时并不明显

如果应用程序在加载时默认为
play
,或者在
play按钮上传递条件的方法也可以,我就可以了

这是我的密码:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  titlePanel("tester"),
  sidebarLayout(
    sidebarPanel(id="sidebar",
                 uiOutput("slider"),
                 actionButton("change_controls",tags$b("Update controls")),
                 uiOutput("speed_value"), 
                 uiOutput("step_size")
    ),
    mainPanel(
      h4(textOutput("selectedtime"))
    )
  )
)

server <- function(input, output,session) {

  ##make the updates reactive to the action button
  observeEvent(input$change_controls,{
    val <- input$timeRange
    updateSliderInput(session, "timeRange",value=val)

  })

  ##datetime slider definition.
  output$slider <- renderUI({

    ##make this slider reactive when the actionbutton is updated.
    input$change_controls

    ##isolating their dependencies so the slider does not refresh whiles changes are being made.
    steps <- isolate(input$step_size)
    speed <- isolate(input$speed)


    ##slider definition
    sliderInput("timeRange", label = "time:", width = '600px',
                min = 1,
                max = 10000,
                value = 1,
                step = 60*steps,
                animate = animationOptions(interval = 3200 - (speed*300))
    )

  })

  ##animation speed control
  output$speed_value <- renderUI({
    sliderInput("speed",
                label = div(style='width:300px;',
                            div(style='float:left;', 'slower'),
                            div(style='float:right;', 'faster')),
                min = 1, 
                max = 10, 
                value = 6, 
                width = '300px')

  })

  ##time step definition by user
  output$step_size <- renderUI({
    sliderInput("step_size","Steps:",
                min = 10, max = 60, value = 1, width = '300px')
  })

  ##OUTPUT
  observe({
    output$selectedtime <- renderText({
      paste(format(input$timeRange))
    })

  })
}
shinyApp(ui,server)
库(闪亮)
图书馆(shinyjs)

我不确定我是否知道你想要什么。首先,sliderInput“timeRange”中的变量“minimum.slider”不存在。但是,在renderUI()中放置sliderInput(“速度”和“步长”)有什么原因吗?如果你把它放在代码的ui部分,它应该可以正常工作。我已经删除了minimum.slider变量。抱歉。速度和步长在我正在使用的更大的应用程序中做了其他事情。但是,是的,我同意它们可以放在代码的ui部分。我想要的是启用一个条件,即“如果用户按下播放滑块,则不显示动画”必须单击“更新滑块”操作按钮。但如果步长和速度发生变化,则只有在单击“更新滑块”按钮时,更新才会进入“时间范围”滑块。