если еще в блестящей реактивной - PullRequest
0 голосов
/ 25 января 2019

У меня довольно простая проблема, но я не могу понять, почему она не работает

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.

Просто наткнись на

Предупреждение: ошибка в случае: аргумент имеет нулевую длину [Нет трассировки стека имеется]

1 Ответ

0 голосов
/ 25 января 2019

Вам не нужно запускать mydata (), если input $ dataselect недоступен, это можно сделать, вставив: 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...