2017-10-26 2 views
1

Ich versuche, glänzend und ggvis zum ersten Mal zu implementieren.Versuchen, einen Schieberegler reaktiv

Ich möchte einen einfachen Schieberegler zum Filtern von mpg in der mtcars-Datenmenge hinzufügen.

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

Antwort

1

Versuchen Sie folgendes:

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

So ist der Trick, um die filter Funktion von dplyr zusammen aus ggvis mit eval und der input_slider Funktion zu verwenden.

+0

Vielen Dank! Das hat mich dahin gebracht, wo ich gebraucht habe. Jetzt stoße ich auf ein Problem, bei dem das Programm nach dem Abspielen mit dem Slider weiterhin abstürzt. – adarvishian

Verwandte Themen