我已经看到一些很酷的用R来制作网络应用程序,并想尝试自己学习如何使用它。我现在正在做教程,但是当我进入教程的输入和输出部分(http://rstudio.github.io/shiny/tutorial/#inputs-and-outputs)时,我遇到了问题。
具体来说,我收到的错误是:
.getReactiveEnvironment()$ currentContext()中的错误: 没有活动的反应上下文,不允许操作。 (你试图做一些只能在反应函数内完成的事情。)
我尝试了很多不同的东西,并在网上到处搜索,但无法弄清问题是什么。我在OS X版本10.8.3上运行R版本2.15.2。我的默认浏览器是Chrome。
感谢您的帮助。
答案 0 :(得分:49)
我知道这个问题有点陈旧,但回应那些在面对同样的错误信息时可能会来搜索的人。
由于您尚未包含代码,因此我们来看看为什么会出现此错误消息。
当错误消息显示“没有活动的反应上下文时不允许操作。”时所说的是您正在访问ShinyServer
函数中的“被动”元素,但是外部任何反应函数,例如renderTable
或renderPlot()
等。
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()
来访问该Input参数
注意括号,因为它是反应函数。
希望有所帮助。
答案 1 :(得分:1)
对我而言,当我忘记使用renderPrint
时,我遇到了这个问题,这在您刚刚开始时很容易忘记。
例如:
shinyServer(function(input,output) {
output$outputString <- input$something
}
)
当我真正需要做的是
shinyServer(function(input,output) {
output$outputString <- renderPrint({input$something})
}
)