2016-06-24 4 views
2

Я новичок в R пытается выполнить следующие функции в г я создал фрейм данных book3Создание depandant Select Input в 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) 

Я хочу, чтобы вытащить регион и страну, которая будет ответчиком. Я пытаюсь с помощью этого кода

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


))) 

ответ

1

Если вы создаете вход на основе данных, необходимо создать вход в server.R так что вы можете получить доступ к данным , Вы делаете это путем usng renderUI и uiOutput. См. here for reference

Вот рабочий пример. Обратите внимание на renderUI() функций в server, которые генерируют selectInput на основе данных

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

Это хорошо работает, но это не дает мне зависимого падения. Например, когда я выбираю Азиатско-Тихоокеанский регион, он должен дать мне такие страны, как Китай, Индия и т. Д. –

+0

Я пробовал условную панель, но она не работает. –

+0

@RahulThakur - это просто случай, когда 'selectInput' для' data2' зависит от выбора 'data1'. См. Мое редактирование. – SymbolixAU

1

Вы можете использовать функцию updateSelectInput в коде сервера, чтобы обновить выбор (и выбранный вариант) ваше полое selectInput:

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