2017-01-04 2 views
0

s1을 선택하면 하나의 사이드 바 패널 및 메인 패널 만 표시되며 결과 알파는 0.05이고 출력은 0.8입니다. s2를 선택하면 sidebarPanel과 mainPanel을 하나만 표시하고 결과 알파는 0.1, 출력은 0.9입니다.checkboxInput 및 conditionalPanel in shiny

이것은 내 ui.R 및 server.R입니다.

server <- shinyServer(function(input, output) { 
output$Table <- renderTable({ 
if(input$submit > 0) { 
    output<-data.frame(input$alpha,input$power) 
    output 
} 
}) 

output$Text<-renderText({ 
if(input$submit > 0) { 
    paste("alpha and power are",input$alpha,"and",input$power) 
} 
}) 
}) 

shinyApp(ui = ui, server = server) 

가 대단히 감사합니다 : 다음은 내 server.R 파일의 코드

library(shiny) 
ui <- shinyUI(fluidPage(
    titlePanel("aaaaaaaaaaaaaaaa"), 
    tabsetPanel(
    navbarMenu("Means", 
      tabPanel("One Mean"), 
      tabPanel("Two Means", 
        wellPanel(
         checkboxInput(inputId = "s1", label = "S1", value = FALSE), 
         checkboxInput(inputId = "s2", label = "S2", value = FALSE) 
        ), 
        conditionalPanel(condition="input.s1==true", 
         sidebarPanel(
         p(strong("Error Rates")), 
         numericInput("alpha", label="Alpha", min=0, max=1,value=0.05), 
         numericInput("power", "Power", 0.8), 
         actionButton("submit","Submit") 
        ), 
         mainPanel(
         tabsetPanel(
          tabPanel("Main", 
            tableOutput("Table"), 
            uiOutput("Text") 
         ) 
         ) 
        ) 
        ), 
        conditionalPanel(condition="input.s2==true", 
            sidebarPanel(
             p(strong("Error Rates")), 
             numericInput("alpha", label="Alpha", min=0, max=1,value=0.1), 
             numericInput("power", "Power", 0.9), 
             actionButton("submit","Submit") 
            ), 
            mainPanel(
             tabsetPanel(
             tabPanel("Main", 
                tableOutput("Table"), 
                textOutput("Text") 
             ) 
             ) 
            ) 
        ) 
     ) 
    )))) 

:

다음은 내 ui.R 파일의 코드입니다.

+0

환영합니다. 여기에 질문이 없습니다. 네가 원하는 걸 좀 더 노골적으로 표현할 수 있니? –

+0

만약 내가 s1을 선택한 다음, 오직 alpha = 0.05 Panel을 보여 주면, s1을 선택하면, alpha = 0.1 Panel 만 보여줄 것입니다. 이제 한 페이지에 두 개의 Panel이 있습니다. 고맙습니다. – stata

+0

@stata 언제든지 's1'과's2' 둘 다 선택해야합니까? 이 경우 어떻게 작동 할 것으로 기대합니까? – krish

답변

2

이 방법이 유용 할 것입니다. 서로 다른 ID를 처리하려면 서버 코드를 약간 수정해야합니다. 다양한 UI 요소에 대해 동일한 ID를 사용할 수 없습니다.

ui <- shinyUI(fluidPage(
    titlePanel("aaaaaaaaaaaaaaaa"), 
    tabsetPanel(
    navbarMenu("Means", 
       tabPanel("One Mean"), 
       tabPanel("Two Means", 
         wellPanel(
          radioButtons(inputId = "buttons", "Selections", c("S1", "S2"), selected = "S1", inline = TRUE) 
         ), 
         sidebarPanel(
          conditionalPanel(condition = "input.buttons == 'S1'", 
              p(strong("Error Rates")), 
              numericInput("alpha", label="Alpha", min=0, max=1,value=0.05), 
              numericInput("power", "Power", 0.8), 
              actionButton("submit","Submit") 
              ), 
          conditionalPanel(condition = "input.buttons == 'S2'", 
              p(strong("Error Rates")), 
              numericInput("alpha1", label="Alpha", min=0, max=1,value=0.1), 
              numericInput("power1", "Power", 0.9), 
              actionButton("submit1","Submit") 
              ) 
         ), 
         mainPanel(
          tabsetPanel(
          tabPanel("Main", 
            tableOutput("Table"), 
            textOutput("Text") 
          ) 
         ) 
         ) 
       ) 
    )))) 
+0

고맙습니다. 이제 s1로 제출은 조치이지만 s2로 제출은 조치가 아닙니다. – stata

+0

@stata, 나는 당신이 말하려고하는 것을 얻지 못했습니다. – krish

+0

s2를 선택하여 제출할 때 Main의 내용이 비어 있습니다. – stata

관련 문제