2017-10-26 9 views
1

나는 shiny와 ggvis를 처음으로 구현하려고합니다.슬라이더를 리 액티브로 만들려고 시도합니다.

mtcars 데이터 세트에서 mpg를 필터링하기위한 간단한 슬라이더를 추가하고 싶습니다.

server.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) 
) 
)) 

답변

1

이 시도 :

ui.R을 :

library(ggvis) 
library(shiny) 

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

server.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") 
}) 

그래서 트릭은 evalggvis에서 input_slider 기능과 함께 dplyr에서 filter 기능을 사용하는 것입니다.

+0

감사합니다. 이것은 내가 필요한 곳으로 나를 데려 갔다. 이제는 슬라이더를 사용한 후 프로그램이 계속 충돌하는 문제가 발생합니다. – adarvishian