【问题标题】:if else in shiny reactive如果在闪亮的反应
【发布时间】:2019-01-24 23:18:24
【问题描述】:

我有一个相当简单的问题,但不知道为什么它不起作用

library(shiny)
library(leaflet)


pts <- data.frame(
  id = letters[seq(from = 1, to = 10)],
  x = rnorm(10, mean = -93.625),
  y = rnorm(10, mean = 42.0285),
  stringsAsFactors = F
)




# Define UI
ui <- fluidPage(uiOutput('Select'))

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

  output$Select <- renderUI({
    Range <- sort(unique(pts$id))
    selectInput("dataselect",
                "select",
                choices = Range,
                selected = 'a')
  })


  mydata <- reactive({
    if (input$dataselect != 'a') {
      data <- pts[pts$id == input$dataselect,]
    }
    else
    {
      data <- pts
    }


  })

  observe(print(mydata()))


}


shinyApp(ui = ui, server = server)

如果使用所选值选择了 'a' 以外的任何其他内容,我基本上会尝试对我的数据集进行子集化。如果选择了'a',我希望返回整个df。

碰上

警告:if 中的错误:参数长度为零 [无堆栈跟踪 可用]

【问题讨论】:

    标签: r if-statement shiny


    【解决方案1】:

    如果 input$dataselect 不可用,您需要不运行 mydata(),可以通过插入:req(input$dataselect)

    如下图:

    
    
    library(shiny)
    library(leaflet)
    
    
    pts <- data.frame(
      id = letters[seq(from = 1, to = 10)],
      x = rnorm(10, mean = -93.625),
      y = rnorm(10, mean = 42.0285),
      stringsAsFactors = F
    )
    
    
    
    
    # Define UI
    ui <- fluidPage(uiOutput('Select'))
    
    server <- function(input, output, session) {
    
    
      output$Select <- renderUI({
        Range <- sort(unique(pts$id))
        selectInput("dataselect",
                    "select",
                    choices = Range,
                    selected = 'a')
      })
    
    
      mydata <- reactive({
        req(input$dataselect)
        if (input$dataselect != 'a') {
          data <- pts[pts$id == input$dataselect,]
        }
        else
        {
          data <- pts
        }
    
    
      })
    
      observe(print(mydata()))
    
    
    }
    
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 1970-01-01
      • 2017-07-27
      • 2015-06-23
      • 2014-08-23
      • 2020-10-13
      • 2016-02-22
      • 2021-05-10
      • 1970-01-01
      相关资源
      最近更新 更多