Блестящая ошибка в R

Я видел некоторые интересные применения блестящих с R для создания веб-приложений и хотел попытаться научиться самому использовать его. Сейчас я занимаюсь учебным курсом, но когда я добираюсь до раздела "Входы и выходы" учебника (http://rstudio.github.io/shiny/tutorial/#inputs-and-outputs), я забегаю к проблема.

В частности, я получаю сообщение об ошибке:

Ошибка в .getReactiveEnvironment() $currentContext(): Операция не допускается без активного реактивного контекста. (Вы пытались сделать что-то, что может быть сделано только внутри реактивной функции.)

Я пробовал кучу разных вещей и искал везде в Интернете, но не могу понять, в чем проблема. Я запускаю R версии 2.15.2 в OS X версии 10.8.3. Мой браузер по умолчанию - Chrome.

Спасибо за помощь.

Ответ 1

Я знаю, что этот вопрос немного устарел, но отвечает за тех, кто может найти поиск, столкнувшись с тем же сообщением об ошибке.

Поскольку вы не включили свой код, давайте посмотрим, почему это сообщение об ошибке происходит вообще.

Когда в сообщении об ошибке говорится: " Операция не разрешена без активного реактивного контекста.", то, что она говорит, является то, что вы обращаетесь к "реактивному" элементу внутри функции ShinyServer, но вне любого реактивных функций, таких как renderTable или renderPlot() и т.д.

Это не будет работать внутри ShinyServer()

shinyServer(function(input, output) {
    abc <- input$some.input.option   

  #other reactives here

})

Исправление: оберните его внутри reactive

Это будет работать:

shinyServer(function(input, output) {
  abc <- reactive({
   abc <- input$some.input.option    
  })

  #other reactives here

})

И теперь, изнутри функции ShinyServer, вы можете получить доступ к этому входному параметру, вызвав abc() Обратите внимание на скобки, поскольку это реактивная функция.

Надеюсь, что это поможет.

Ответ 2

Для меня у меня была эта проблема, когда я забыл об использовании renderPrint, которую легко забыть, когда вы только начинаете.

Например:

shinyServer(function(input,output) {
  output$outputString <- input$something
  }
)

Когда мне действительно нужно было

shinyServer(function(input,output) {
  output$outputString <- renderPrint({input$something})
  }
)