2014-09-24 101 views
1

我的問題是類似這樣的:R studio shiny conditional statements[R閃亮 - conditionalPanel和條件值

我ui.R看起來是這樣的:

... 
radioButtons("yes_or_no", "Yes or No?", c("yes"=1, "no"=0)), 
    conditionalPanel(
    condition = "input.yes_or_no == '1'", 
     numericInput("num_1", "First numeric input", 0, min=0), 
     numericInput("num_2", "Second numeric input",0, min=0), 
     numericInput("num_3", "Third numeric input",0, min=0) 
), 
... 

我想要的值num_1num_2num_3等於0當radioButton設置爲「no」並且條件不符合時。而且由於ConditionalPanel只是一個「圖形」條件,它隻影響控件,而不影響控件的值。 按照這個問題的答案(R studio shiny conditional statements)我意識到在server.R文件中的以下內容:

yes_or_no <- input$yes_or_no 
num_1 <- input$num_1 
num_2 <- input$num_2 
num_3 <- input$num_3 

if (input$yes_or_no == 0) { 
    num_1 <- 0 
    num_2 <- 0 
    num_3 <- 0 
} 
myfunction(yes_or_no, num_1, num_2, num_3) 

但是,這並不工作。當我輸入numericInputs的值時,即使將條件面板設置爲「否」,我們的服務器端if語句也不會用0覆蓋這些變量,所以它們仍保留附加到它們。

有誰知道嗎,如何實現這一點?提前致謝!

回答

1

好的,在Shiny Google-Group的幫助下,我想出瞭如何去做。這裏有一個工作示例:

server.R:

library(shiny) 
shinyServer(function(input, output) { 

    output$ttable1 = renderTable({ 

    output$num_2_ui <- renderUI({ 
     num_2 <- ifelse(input$yes_or_no == 0, 0, input$num_2) 
     numericInput("num_2", "Value num_2", value=num_2, min=0) 
    }) 

    yes_or_no <- input$yes_or_no 
    num_2 <- input$num_2 

    table1 <- data.frame(yes_or_no, num_2) 
    print(t(table1)) 

    }) 
}) 

ui.R:

library(shiny) 

shinyUI(fluidPage(

    titlePanel("test"), 

    sidebarLayout(
    sidebarPanel(
     uiOutput("num_2_ui"), 
     radioButtons("yes_or_no", "Yes or No?", c("yes"=1, "no"=0), selected="no") 

    ), 

    mainPanel(
     uiOutput("ttable1") 
    ) 
) 
)) 

不知道它是唯一的,最好的辦法,但目前它爲我工作。