18

我已经看到了一些很酷的用 R 来制作 web 应用程序的闪亮用法,并想尝试自己学习如何使用它。我现在正在做教程,但是当我进入教程的输入和输出部分时(http://rstudio.github.io/shiny/tutorial/#inputs-and-outputs)我遇到了一个问题。

具体来说,我收到一条错误消息:

.getReactiveEnvironment()$currentContext() 中的错误:如果没有活动的反应上下文,则不允许操作。(你试图做一些只能从反应函数内部完成的事情。)

我尝试了很多不同的东西,并在网上到处搜索,但无法弄清楚问题所在。我在 OS X 版本 10.8.3 上运行 R 版本 2.15.2。我的默认浏览器是 Chrome。

谢谢您的帮助。

4

2 回答 2

61

我知道这个问题有点过时,但对那些在遇到相同错误消息时可能会来搜索的人作出回应。

由于您还没有包含您的代码,让我们来看看为什么一般会出现此错误消息。

当错误消息显示“在没有活动反应上下文的情况下不允许操作。 ”它的意思是您正在访问ShinyServer函数内部的“反应”元素,但任何反应函数之外,例如renderTableorrenderPlot()等​​。

这在 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() Note 括号来访问该 Input 参数,因为它是一个反应函数。

希望有帮助。

于 2013-07-15T07:38:27.340 回答
2

对我来说,当我忘记使用时遇到了这个问题renderPrint,当你刚启动时很容易忘记。

例如:

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

当我真正需要做的是

shinyServer(function(input,output) {
  output$outputString <- renderPrint({input$something})
  }
)
于 2016-07-02T22:22:42.657 回答