Попытка сделать слайдер реактивным

Я пытаюсь реализовать блестящий и ggvis в первый раз.

Я хочу добавить простой ползунок для фильтрации миль на галлон в наборе данных mtcars.

сервер.R

library(shiny)
library(ggvis)
library(dplyr)

data("mtcars")


shinyServer(function(input, output){

filtercar <- reactive({

mpgs <- input$mpg

m <- mtcars %>%
  filter(
  mpg >= mpgs
  )
m <- as.data.frame(m)
})


mtcars %>%
ggvis(~mpg, ~disp, fill := "red") %>%
layer_points() %>%
bind_shiny("p", "p_ui")
})

ui.R

library(ggvis)
library(shiny)

shinyUI(bootstrapPage(
wellPanel(ggvisOutput("p"),
        uiOutput("p_ui"),
        HTML("Comparing cars by disp and mpg")),
wellPanel(HTML("CARS")),
wellPanel(
h4("Filter"),
sliderInput("mpg","miles per gallon", value = 20, min = 0, max = 100, step = 
1)
 )
))

person adarvishian    schedule 26.10.2017    source источник


Ответы (1)


Попробуй это:

ui.R:

library(ggvis)
library(shiny)

shinyUI(bootstrapPage(
  wellPanel(
    uiOutput("p_ui"),
    ggvisOutput("p"),
    HTML("Comparing cars by disp and mpg")
  )))

сервер.R:

library(shiny)
library(ggvis)
library(dplyr)

shinyServer(function(input, output) {
  mtcars %>%
    ggvis(~mpg, ~disp) %>%
    filter(mpg > eval(input_slider(10, 35, 10))) %>%  # this is the trick
    layer_points() %>%
    scale_numeric("x", domain = c(10, 35)) %>%  # keep axis stable
    scale_numeric("y", domain = c(0, 500)) %>%  # same
    bind_shiny("p", "p_ui") 
})

Таким образом, хитрость заключается в использовании функции filter из dplyr вместе с eval и функцией input_slider из ggvis.

person Samuel    schedule 27.10.2017
comment
Благодарю вас! Это привело меня туда, где мне было нужно. Теперь я столкнулся с проблемой, когда программа продолжает падать после игры с ползунком. - person adarvishian; 30.10.2017