R Shiny中的sliderInput有问题 - 获取NaNs

Phi*_*hil 4 r slider rangeslider shiny

我正在尝试制作一个在2005年到2040年之间有多年的滑块输入.看起来很简单,对吧?通常它工作正常,但每隔一段时间我会将滑块拉到太远的左边,它会给我NaN,这往往会使事情崩溃.我试图设置其余的代码,以便它没有问题,但它仍然困扰着我.我已经在互联网上搜索了解释,但到目前为止还没有.这是我的ui.R:

library(shiny)

shinyUI(fluidPage(
  titlePanel("Test"),

  sidebarLayout(
  sidebarPanel(

    selectInput("over", "Indicator", c("Indicator 1", "Indicator 2"), selected="Trade"),

    selectInput("type", "Type", c("Discrete", "Continuous")),


    # Nothing particularly unusual here...   
    sliderInput("year", "Year", min=2005, max=2040, value=2005, animate=animationOptions(interval=1500), sep=""),

    checkboxInput("table", "Show Table")

    , width=3),

  mainPanel(    
    uiOutput("plot"),

    uiOutput("showtable")

    , width=9)
  )
))
Run Code Online (Sandbox Code Playgroud)

Pau*_*ros 9

我认为问题可能在于您的sep参数.那应该是step吗?如果是这样,它需要是一个数字或NULL.我将该行更改为以下内容:

sliderInput("year", "Year", min=2005, max=2040, value=2005, animate=animationOptions(interval=1500), step=1),
Run Code Online (Sandbox Code Playgroud)

它工作正常.至少,我能够尽可能地向左拖动而没有任何问题.另一方面,我没有你的server.R文件,所以如果问题存在,或者文件之间有交互,我就不会看到它.

更新:

问题出在你的Shiny版本上.我发现这是因为sep当我试图运行应用程序时参数是一个"未使用的参数".我原本以为这是一个错字,但你的确定性(在你最近的评论中)导致我查看文档sliderInput.你是完全正确的,sep是一个有效的参数.我想这意味着我的shiny软件包版本已经过时了,所以我更新了它.更新后,不仅sep参数被接受,而且我能够复制您的问题.我发现如果我试图将滑块拖离浏览器窗口,其值将更改为NaN.此外,滑块看起来更漂亮.我猜这与sliderInput函数代码的更改有关.如果我找到更改,我会看一下并再次更新.

UPDATE2

我发现了这个问题.在最新版本的Shiny中,他们决定使用jQuery编写的范围滑块ion.rangeSlider.具体来说,他们使用的是2.0.2版.不幸的是,当左侧滑块从浏览器窗口拉出时,该版本出现了返回NaN 的问题(听起来很熟悉?).这已在ion.rangeSlider(2.0.6)的最新版本中修复.我希望该shiny软件包的下一个版本包含最新版本的ion.rangeSlider.

我知道这实际上并没有解决你的问题.但是,以下将:

  1. 找出R软件包的安装位置
  2. 转到子文件夹shiny\www\shared\ionrangeslider\css
  3. 将文件ion.rangeSlider.skinShiny.css复制到其他位置
  4. 删除有光泽\ www\shared\ionrangeslider的内容
  5. 这里下载ion.rangeSlider的.zip文件
  6. 将ion.rangeSlider-master的内容复制到步骤2中提到的ionrangeslider文件夹中
  7. 将ion.rangeSlider.skinShiny.css移回闪亮的\ www\shared\ionrangeslider\css

然后只需分离并重新加载shiny包,你应该全部设置.