2016-04-12 22 views
1

Merhaba Şimşek için oldukça yeni. Kullanıcının tablodaki verileri göstermesi için iki etkileşimli selectInputs oluşturmaya çalışıyorum. Ben kodu çalıştırdığınızdaR parlak: reaktifde çoklu girişler {}

library(shiny) 
library(ggplot2) 
library(dplyr) 
df <- readRDS("data/df.rds") 

shinyServer(function(input, output) { 

datasetInput <- reactive({ 

    switch(input$var, 
      "ALL" = df, 
      "A2" = df %>% filter(country == "A2"), 
      "AE" = df %>% filter(country == "AE")) 


    switch(input$plat, 
      "ALL" = df, 
      "Android" = df %>% filter(platform == "Android"), 
      "IPhonePlayer" = df %>% filter(platform == "IPhonePlayer")) 



    }) 


    output$view <- renderTable({head(datasetInput())}) 

}) 

, yalnızca platformda seçme düzgün çalıştığını ui.R

library(shiny) 

shinyUI(fluidPage(

    sidebarLayout(
    sidebarPanel(

     selectInput("var", 
        label = "Country", 
        choices = c("ALL", "A2", "AE")), 
     selectInput("plat", 
        label = "Platform", 
        choices = c("ALL", "Android", "IPhonePlayer")) 
    ) 
    ), 
    mainPanel(

     tableOutput(
     "view")) 
) 
)) 

server.R ülke için hiçbir şey ne olur ise,: Burada gibi benim kod benzediğini olduğunu Seçimi ben yaparım. Burada ne kadar aptalca hata yaptığım hakkında bir fikrin var mı? Şimdiden çok teşekkür ederim!

cevap

1

İlk switch sonucunu df'a atamayı deneyin. Şu anda, iki switch bağlı değil ve reactive sadece ikinci olanın sonucunu döndürür.

df <- switch(input$var, 
     "ALL" = df, 
     "A2" = df %>% filter(country == "A2"), 
     "AE" = df %>% filter(country == "AE")) 
+0

daha ayrıntı olabilir mi? Bunu önerdiğin gibi atamaya çalıştım ama yine de aynı sonucu aldım. Yanlış şekilde atamış olmalıyım. Teşekkür ederim! – cat88

+0

@ cat88 Az önce cevabımı düzenledim –

+0

Çok teşekkür ederim! Şimdi çalışıyor! Umarım harika bir gün geçirirsiniz !!! – cat88

1

için soruyorsunuz Ne değil, ama böyle kodunuzu artırabilir düşünüyorum:

datasetInput <- reactive({ 
    df %>% 
    filter(
     (input$var == 'ALL' | country == input$var) & 
     (input$plat == 'ALL' | country == input$plat) 
    ) 
}) 
+0

Teşekkürler! Bu gerçekten bana biraz sıkıntı veriyor. – cat88