R shiny의 Server 부분부터 만드는게 이해하기가 쉽다. 가장 쉽게 두개의 selectInput만을 연결하기 위해 renderUI를 두 개 만든다. 맨 처음에 플랑크톤, 해파리, 저서동물인지를 선택하는 selectInput을 만든다. selectInput(selectInput의 이름, UI에 표출되는 selectInput의 이름, selectInput의 선택지, selected=초기에 선택되는 항목)으로 구성된다.
다음으로 연결시키려는 selectInput을 만들때 조건을 추가한다. 앞에서 만든 selectInput의 이름을 Data라고 했었는데 사용자가 선택한 값은 input$Data에 저장된다. 조건문을 이용하여 input$Data이 null일 때 return(NULL)이라하면 아무것도 출력되지 않는다. 다음 조건으로 플랑크톤, 해파리, 저서동물을 선택할 때 출력되는 selectInput을 각각 만들면 Server에서 할일은 끝났다.
# library
library(shiny)
# Server
shinyServer(function(input, output){
output$Data<-renderUI({
selectInput("Data","Data",choices = c("NONE","Plankton","Jellyfish","Animal"),selected="NONE")
})
output$C<-renderUI({
if(is.null(input$Data)){
return(NULL)
}else if(input$Data=="Plankton"){
selectInput("C", "Abundance(cells/mL):",c("NONE",paste("Plankton",1:5)),selected="NONE")
}else if(input$Data=="Jellyfish"){
selectInput("C", "Abundance(cells/mL):",c("NONE",paste("Jellyfish",1:5)),selected="NONE")
}else if(input$Data=="Animal"){
selectInput("C", "count",c("NONE",paste("Animal",1:5)),selected="NONE")
}else{
}
})
})
마지막으로 UI의 siderPanel 부분에 앞에서 만든 selectInput을 uiOutput(
selectInput 이름)으로 이용해 넣기만 하면 된다.
# library
library(shiny)
# UI
shinyUI(fluidPage(
sidebarPanel(
uiOutput("Data"),
uiOutput("C")
)
))
생성한 R Shiny는 아래와 같다.
0 개의 댓글:
댓글 쓰기