2016-12-22 2 views
0

Я создаю простое приложение RShiny, которое вычисляет размер выборки и мощность, но я продолжаю получать это сообщение об ошибке --- Предупреждение: Ошибка в .getReactiveEnvironment() $ currentContext: операция не разрешена без активного реактивного контекста , (Вы пытались сделать что-то, что может быть сделано только внутри реактивного выражения или наблюдателя.) Я не мог понять, как это исправить. Это мой первый раз, используя RShiny. Если кто-то может помочь, я действительно ценю это! Большое спасибо!RShiny реактивная ошибка

library(shiny) 
ui <- fluidPage(
headerPanel("Power and Sample Size Calculator"), 
fluidRow(column(12, 
       wellPanel(
       helpText("Two proportions (equal sample size in each group) power/sample size analysis"), 
       selectInput (inputId = "choice", 
          label = " Please Choose What You Want To Calculate", 
          c("Power","Sample Size"),selected = NULL, 
          multiple = FALSE, 
          selectize = TRUE, width = NULL, size = NULL) 
       )), 
     column(4, 
       wellPanel(
       conditionalPanel(
        condition = "input$choice = Power", 
        numericInput (inputId = "tau", 
           label = "Effect Size", 
           value = "0.2", 
           min = 0, max =1), 
        numericInput (inputId = "n", 
           label = "Sample Size in Each Group", 
           value = "200", 
           min = 0, 
           max = 100000000), 
        sliderInput (inputId = "alpha", 
           label = "Significance Level ⍺= ", 
           value = "0.05", 
           min = 0.001, max = 0.10)), 
       conditionalPanel(
        condition = "input$choice=Sample Size", 
        numericInput (inputId = "tau", 
           label = "Effect Size", 
           value = "0.2", 
           min = 0, max =1), 
        sliderInput (inputId = "alpha", 
           label = "Significance Level ⍺= ", 
           value = "0.05", 
           min = 0.001, max = 0.10), 
        numericInput (inputId = "beta", 
           label = "Power", 
           value = "0.8", 
           min = 0, 
           max = 1)) 
       ) 
       ), 
     column(8, 
       wellPanel(
       htmlOutput("Result") 
      )) 
      )) 


server <- function(input, output) { 
choice <- switch (input$choice, 
       "Power" = 1, "Sample Size" = 2) 
output$Result <- renderUI({ 
if(choice==1){ 
    final=reactive({pwr.2p.test(h = input$tau, n = input$n, sig.level = input$alpha, power =) 
    }) 
} 
if(choice==2){ 
    final=reactive({pwr.2p.test(h = input$tau, n = , sig.level = input$alpha, power = input$beta) 
})} 
HTML(final) 
} 
) 
} 

shinyApp(ui=ui, server=server) 
+0

Вы должны попробовать что-то вроде 'choiceReactive <- реактивный (переключатель (вход $ выбора, "Power"= 1, "Sample Size"= 2))', но прочитать немного о том, как использовать реактивные первый – HubertL

ответ

0

Я не думаю, что для принятия окончательного решения требуется реагировать. попробуйте это ниже. он работает для меня, за исключением pwr.2p.test, похоже, что это некоторая функция, которую вы пытаетесь использовать. Кроме того, я не понял, почему у вас было HTML(final), использование renderUi должно генерировать html по умолчанию. Дайте мне знать, как все прошло. Успехов

server <- function(input, output) { 
    choice <- reactive({ 
    switch(input$choice,"Power" = 1,"Sample Size" = 2)}) 

    output$Result <- renderUI({ 
    if (input$choice == 'Power') { 
     pwr.2p.test(h = input$tau, 
        n = input$n, 
      sig.level = input$alpha, 
       power = input$beta 
     )} 
    if (input$choice == 'Sample Size') { 
     pwr.2p.test(h = input$tau, 
        n = , 
      sig.level = input$alpha, 
       power = input$beta 
     )} 
    }) 
} 
Смежные вопросы