闪亮:反应滑块在绘图中产生错误:“invalid'xlim'value”

时间:2017-05-27 09:45:57

标签: r shiny

我想用shiny生成一个反应滑块。但是,我猜测图是在评估无功输入之前生成的,错误会在短时间内出现。 当我使用ggplot代替plot时,错误为:Asthetics must be either length 1 or the same as the data

ui.R

library(shiny)

shinyUI(fluidPage(

  titlePanel(""),

  sidebarLayout(
    sidebarPanel(
      checkboxInput("check", "scale 0 to 30", F),

      # here is the reactive slider
      uiOutput("slider")
    ),

    mainPanel(
      plotOutput("plt")
    )
  )
))

server.R

library(shiny)

shinyServer(function(input, output) {

    output$slider <- renderUI({
      sliderInput("inSlider", "Reactive scale", 
                  min   = ifelse(input$check == T,  0, 0), 
                  max   = ifelse(input$check == T, 30, 100), 
                  value = ifelse(input$check == T, 20, 20))
  })

    output$plt <- renderPlot({

      plot(mtcars$qsec, mtcars$mpg, xlim=c(0,input$inSlider))

    })

})

enter image description here

所以我的问题是:我怎样才能避免这个错误?

1 个答案:

答案 0 :(得分:1)

req(input$inSlider)添加为output$plot的第一行。

这个构造是在大约一年半之前创建的,正好适合这种情况。

它应该减少困扰Shiny并使程序难以理解的if(!is.null(input$..的数量。遗憾的是,您在SO或网络上找到的大多数简单示例都没有该构造 - 甚至是if(!is.null..形式。所以这种情况会不断出现,并伴随着不同的症状。