2017-10-10 5 views
0
biz1 = data.frame(

    Stock = query11$MONTHNAME, 

    SaleDate=query11$SALE_DATE, 
    Total = as.numeric(as.character(query11$TOTAL)), 

    NumberOfBills=query11$TRIID, 
    year=query11$YEAR, 
    stringsAsFactors = FALSE 

)  
output$Box3 = renderUI(
     if (USER$Logged==TRUE){ 
      selectInput("yr","select a year",c(unique(biz1$year),"pick one"),"pick one") 
     }) 

     output$Box4= renderUI(

     if (USER$Logged==TRUE) 
     { 
      if (is.null(input$yr) || input$yr == "pick one"){return() 
      }else selectInput("sector", 
          "Select a Month", 
          c(unique(biz1$Stock[which(biz1$year%in%input$yr)]),"pick one"), 
          "pick one") 



     }) 

est ici la subdata2 est la fonction réactive où je veux distinguer les données sur la base des deux entrées, mais je ne suis pas à passer format correctcomment passer deux entrées dans une fonction réactive pour distinguer les données sur la base des deux

subdata2 = reactive(biz1[which(biz1$Stock%in%input$sector),]&&biz1[which(biz1$Stock%in%input$yr)]) 
+0

toute aide comment faire –

+0

qu'entendez-vous être distinguer les données? S'il vous plaît fournir un exemple reproductible. – Niket

+0

signifie que si je suis sélectionné octobre comme un mois, il montre des données d'octobre 2016 et 2017, mais je veux seulement 2017 données –

Répondre

0

Comme il n'y avait pas assez d'informations et aucun exemple reproductible, j'ai essayé de résoudre la question en supposant qu'il n'y avait pas d'erreur généré en Shiny et que le problème a été les données sous-ensembles.

Votre code sous-ensemble des données

subdata2 = reactive(biz1[which(biz1$Stock%in%input$sector),]&&biz1[which(biz1$Stock%in%input$yr)]) 

Il y a 3 erreurs que je vois:

  1. which(biz1$Stock%in%input$yr), ici vous sous-ensembles de la colonne Stock en utilisant la valeur input$yr
  2. Le utilisation de && vs &, ici la forme la plus longue évalue de gauche à droite examinin g seul le premier élément de chaque vecteur. Vérifiez ?"&&" pour en savoir plus
  3. L'utilisation de which, dans votre code vous sous-ensemble la même trame de données séparément, puis en les comparant avec &&, à la place vous devriez, par exemple. biz1[which(biz1$Stock %in% input$sector & biz1$year %in% input$yr),]

Solution complète

library(shiny) 

biz1 = data.frame(Stock = 1:12, year = 2016:2017, test = c("a", "b", "c"), 
        stringsAsFactors = FALSE) 


ui <- fluidPage(
    uiOutput("Box3"), 
    uiOutput("Box4"), 
    dataTableOutput("tbl") 
) 


server <- function(input, output, session){ 

    output$Box3 = renderUI({ 
    selectInput("yr","select a year",c(unique(biz1$year),"pick one"),"pick one") 
    }) 

    output$Box4= renderUI({ 

    if (is.null(input$yr) || input$yr == "pick one") { 
     return() 
    } else selectInput("sector", 
         "Select a Month", 
         c(unique(biz1$Stock[which(biz1$year%in%input$yr)]),"pick one"), 
         "pick one") 
    }) 

    # Note the usage of 'which' and '&' to subset the data frame 
    output$tbl <- renderDataTable({ 
    biz1[which((biz1$Stock%in%input$sector) & (biz1$year%in%as.numeric(input$yr))), ] 
    }) 
} 

shinyApp(ui, server) 
+0

son ne fonctionne pas montrant l'erreur: -invalide 'x' tapez dans 'x && y' –

+0

Je ne sais pas ce que tu as essayé. pouvez-vous être plus élaboré? Dans la solution ci-dessus, je n'ai pas utilisé '&&', donc je ne peux pas dire d'où vient l'erreur. – Niket

0

Vous pouvez utiliser le filtre fn

subdata2 = reactive({ 
    x <- filter(biz1,Stock%in%input$sector, year%in%input$yr) 
    x 
})