Я пытаюсь создать блестящее приложение, которое возвращает график, основанный на триплете (переменная, мин, макс), выбранном пользователем.Я, вероятно, что-то упускаю в войне и оцениваю заявления, но мой инстинктивный способ сделать это не работает.Условие типа: filter(iris, input$variable >= input$range[1] & input$variable <= input$range[2]
не приводит к пустому набору данных.
Вот пример с набором данных iris :
library(shiny)
library(tidyverse)
ui <- fluidPage(
titlePanel("Filter example"),
sidebarLayout(
sidebarPanel(
sliderInput("dimension",
"Dimension:",
min = 1,
max = 8,
value = c(1,8)),
selectInput("Petal or Sepal", "type",
c("Sepal Length" = "Sepal.Length",
"Petal Length" = "Petal.length"))
),
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
plotdata <- reactive({
filter(iris, input$type <= input$dimension[1] & input$type >= input$dimension[2])
})
output$distPlot <- renderPlot({
MyPlot <- ggplot(data = plotdata(),
mapping = aes(x = Sepal.Width, fill = Species))
Myplot + geom_histogram()
})
}
shinyApp(ui = ui, server = server)
Проблема, очевидно, заключается в
plotdata <- reactive({
filter(iris, input$type <= input$dimension[1] & input$type >= input$dimension[2])
})
, но после нескольких часов траления через StackOverflow я не смог найти решение.
Спасибо за вашу помощь