R блестящий: тест numericInput с помощью логического оператора

В приложении shiny можно ввести число (numericInput). Метод должен удостовериться, что если число равно 1, оно остается 1, но во всех других случаях (x!=1) переменная должна быть установлена в 0.

в сервере.r:

...    
checkNumber=reactive({
      if(!is.null(input$data)){    

      output$n_insertNumber<-renderUI({
        if(!is.null(input$data)){
          numericInput("number", "Number", value = 8)
        }  
      })

      x<-input$number
      if (x!=1){x==0}
      }
})
...

в ui.r:

...    
uiOutput("n_insertNumber"),
...

Выход:

Предупреждение: ошибка в if: аргумент имеет нулевую длину

Может ли кто-то помочь мне найти решение? Спасибо!

1 ответ

  1. В этом примере приложения вы можете ввести номер с numericInputвиджетом, который затем идет на сервер и в реактивной среде тест делается. Его результат либо 1или 0и доступен через Variable().


    library(shiny)
    
    ui <- shinyUI(fluidPage(
    
       titlePanel("Example"),
    
       sidebarLayout(
          sidebarPanel(
             numericInput("number", "Number", value = 8)
          ),
    
          mainPanel(
             verbatimTextOutput("n_insertNumber")
          )
       )
    ))
    
    server <- shinyServer(function(input, output) {
    
      Variable <- reactive({
        ifelse(test = input$number == 1, yes = 1, no = 0)
      })
    
       output$n_insertNumber <- renderPrint({
         Variable()
       })
    })
    
    
    shinyApp(ui = ui, server = server)