我正在尝试制作一个在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)
)
))
答案 0 :(得分: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
参数被接受,而且我能够复制您的问题。我发现如果我试图将滑块拖离浏览器窗口,其值将更改为NaN。此外,滑块看起来更漂亮。我猜这与sliderInput
函数的代码更改有关。如果我找到更改,我会看一下并再次更新。
我发现了这个问题。在最新版本的Shiny中,他们决定使用jQuery编写的范围滑块ion.rangeSlider
。具体来说,他们使用的是2.0.2版。不幸的是,当左侧滑块从浏览器窗口拉出时,该版本had an issue返回NaN(听起来很熟悉?)。这已在ion.rangeSlider
(2.0.6)的最新版本中修复。我希望shiny
包的下一版本包含最新版本的ion.rangeSlider
。
我知道这并没有真正解决你的问题。但是,以下将:
然后只需分离并重新加载shiny
包,您应该全部设置。