Рассчитать в Shinyapps - PullRequest
0 голосов
/ 06 июня 2018

Я хочу вычислить некоторые значения и вернуть их в мое блестящее приложение:

ui <- fluidPage(
sidebarLayout(
sidebarPanel(numericInput(inputId = "ME",
               label = "Maternal effect:",
               min = -1,
               max = 1,
               value = 0.5),
  numericInput(inputId = "CE",
               label = "Child effect:",
               min = -1,
               max = 1,
               value = 0.5)
),
mainPanel(h3(textOutput("Power"))
)
)
)


server <- function(input, output) {
bzc <- sqrt(abs(input$CE)) * sign(input$CE)     
bzm <- sqrt(abs(input$ME)) * sign(input$ME) 
results <- bzc * bzm
  output$Power <- renderPrint({results  
})
}

shinyApp(ui = ui, server = server) 

Это не похоже на работу.Любые советы о том, как рассчитать в блестящем приложении?

1 Ответ

0 голосов
/ 06 июня 2018

Сообщения об ошибках возникают, потому что у вас есть input -объекты вне render -функций.Если вы хотите вычислить что-то, что вы хотите повторно использовать на нескольких графиках, то используйте функцию reactive или observe.

Для всех остальных случаев достаточно добавить код для bzc,bzm и result внутри render -функций:

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(numericInput(inputId = "ME",
                              label = "Maternal effect:",
                              min = -1,
                              max = 1,
                              value = 0.5),
                 numericInput(inputId = "CE",
                              label = "Child effect:",
                              min = -1,
                              max = 1,
                              value = 0.5)
    ),
    mainPanel(h3(textOutput("Power"))
    )
  )
)


server <- function(input, output) {

  output$Power <- renderPrint({
    bzc <- sqrt(abs(input$CE)) * sign(input$CE)     
    bzm <- sqrt(abs(input$ME)) * sign(input$ME) 
    results <- bzc * bzm

    results  
  })
}

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