R Shiny 中的 sliderInput 出现问题 - 获取 NaN

Having Problems with sliderInput in R Shiny - Getting NaNs

我正在尝试制作一个介于 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)
  )
))

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

sliderInput("year", "Year", min=2005, max=2040, value=2005, animate=animationOptions(interval=1500), step=1),

它运行良好。至少,我可以毫无问题地向左拖动到我想要的最远。另一方面,我没有你的 server.R 文件,所以如果问题存在,或者文件之间的交互,我不会看到它。

更新:

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

更新2

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

我知道这实际上并不能解决您的问题。但是,以下将:

  1. 找出你的 R 包的安装位置
  2. 转到子文件夹 shiny\www\shared\ionrangeslider\css
  3. 复制文件ion.rangeSlider.skinShiny.css到其他地方
  4. 删除shiny\www\shared\ionrangeslider
  5. 的内容
  6. 下载 ion.rangeSlider here
  7. 的 .zip
  8. 将ion.rangeSlider-master的内容复制到步骤2中提到的ionrangeslider文件夹中
  9. 将 ion.rangeSlider.skinShiny.css 移回 shiny\www\shared\ionrangeslider\css

然后只需分离并重新加载 shiny 包,您就应该准备就绪。