R Shiny не будет выводить переменную используя textOutput - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь написать калькулятор, используя Shiny in R для видеоигры (вы вводите статистику вас и вашего оппонента, а она выводит ваши шансы на победу в матче). Однако я не могу заставить приложение Shiny выводить какие-либо из моих переменных. Приложение работает нормально, но при нажатии кнопки действия ничего не выводится.

Пытаясь найти проблему, я упростил свой код до базового калькулятора c, который принимает числовой вход c, умножает его на два и выдает результат. Как и раньше, при нажатии кнопки действия ничего не отображается. Однако, если вы непосредственно вводите строку в функцию renderText, она работает просто отлично.

Мне нужно включить кнопку действия в мой окончательный код, потому что я не хочу, чтобы он вычислял результат до тех пор, пока не будет введено несколько числовых значений. Может ли кнопка действия вызвать проблему где-то или это что-то еще?

Ниже приведен упрощенный код. Если я смогу запустить это, я уверен, что смогу запустить мой более сложный код. Спасибо!

library(shiny)
library(shinythemes)

ui <- fluidPage(

 titlePanel("Multiply by 2"),

  fluidRow(
    column(12, textOutput("test"),
           numericInput(inputId = "start", "Start", value = 1),
           actionButton("go", "Go!") )

  )
)

server <- function(input, output) {

  myval <- reactiveValues()

  observeEvent(input$go, {

     reactive ({
      if (input$go == 0)
        return()
      isolate({
        myval$calc <- paste("The result is", 2*input$start)
      })
    })
  })

  output$test <- renderText({
    if (input$go == 0)
      return()
    isolate({ 
      myval$calc
    })
  })
}

shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 11 апреля 2020

Похоже, там есть дополнительный код, который нам не нужен, например, функция изолята. Ниже приведен минимальный пример:

input$go не говорит нам, что делает кнопка. Попробуйте запустить print(input$go) и посмотрите на вывод.

library(shiny)

ui <- fluidPage(

titlePanel("Multiply by 2"),

  fluidRow(

    column(12, 
      textOutput("test"),
      numericInput(inputId = "start", "Start", value = 1),
      actionButton("go", "Go!")
    )

  )

)

server <- function(input, output) {

  myval <- reactiveValues()

  #Observe button (will run when the button is clicked)
  observeEvent(input$go, {

    myval$calc <- paste("The result is", 2 * input$start)

  })

  #Text output (will run when myval$calc changes)
  output$test <- renderText({

    myval$calc

  })

}

shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...