2016-06-24 7 views
2

Ich bin neu in R versucht, in r folgende Funktionalität zu erreichen ich einen Datenrahmen book3 erstelltErstellen depandant Select Input in Shiny R

Region<- c("Americas", "Asia Pacific","Asia Pacific", "EMEA", "EMEA") 


Country<- c("Mexico", "China","India", "Germany", "Spain") 

Rating<- c(5,3,3,2,4) 

book3<- data.frame(Region, Country, Rating) 

Ich möchte Region und von Land ziehen, die Beklagte sein wird. Ich versuche, mit diesem Code

ui.R

library(shiny) 
shinyUI(fluidPage(
titlePanel("Test Dashboard "), 
sidebarLayout(
sidebarPanel(
selectInput("data1", "Select Region", choices = c(book3$Region)), 

    selectInput("data2", "select country", choices = c(book3$Country)) 
    ), 
mainPanel() 


))) 

Antwort

1

Wenn Sie einen Eingang sind die Erstellung auf Basis von Daten, müssen Sie die Eingabe in der server.R erstellen so können Sie die Daten zugreifen . Sie tun dies durch usng renderUI und uiOutput. Siehe here for reference

Hier ist ein funktionierendes Beispiel. Beachten Sie die renderUI() Funktionen im server, die die selectInput erzeugen, basierend auf den Daten

library(shiny) 

ui <- fluidPage(
titlePanel("Test Dashboard "), 
    sidebarLayout(
     sidebarPanel(
      uiOutput("data1"), ## uiOutput - gets the UI from the server 
      uiOutput("data2") 
     ), 
mainPanel() 
)) 


server <- function(input, output){ 

    Region<- c("Americas", "Asia Pacific","Asia Pacific", "EMEA", "EMEA") 
    Country<- c("Mexico", "China","India", "Germany", "Spain") 
    Rating<- c(5,3,3,2,4) 
    book3<- data.frame(Region, Country, Rating, stringsAsFactors = F) 

    ## renderUI - renders a UI element on the server 
    ## used when the UI element is dynamic/dependant on data 
    output$data1 <- renderUI({ 
     selectInput("data1", "Select Region", choices = c(book3$Region)) 
    }) 

    ## input dependant on the choices in `data1` 
    output$data2 <- renderUI({ 
     selectInput("data2", "select country", choices = c(book3$Country[book3$Region == input$data1])) 
    }) 

} 

shinyApp(ui, server) 
+0

Dies funktionierte gut, aber es gibt mir nicht abhängig Drop-Down. Zum Beispiel, wenn ich Asia Pacific auswähle, sollte es mir die Länder wie China, Indien usw. geben. –

+0

Ich versuchte conditionalPanel, aber es funktioniert nicht. –

+0

@RahulThakur - es ist nur ein Fall, bei dem 'selectInput' für' data2' von der Wahl von 'data1' abhängig ist. Bitte sehen Sie meine Bearbeitung. – SymbolixAU

1

können Sie verwenden, um die updateSelectInput Funktion im Server-Code, um die Auswahl zu aktualisieren (und die ausgewählte Option) Ihrer selectInput Felder:

server <- function(input, output, session) { 
    updateSelectInput(session, "data1", "Select Region", choices = c(book3$Region)) 
}