【问题标题】:Operation not allowed without an active reactive context没有活动的反应上下文不允许操作
【发布时间】:2013-09-29 11:33:26
【问题描述】:

我正在尝试从 R 的数据库中动态构建数据集。下面是我用于相同的代码,但在运行它时出现错误。应用程序正在闪亮运行。

query <- "select * from rdataset" # [col-2]dataset name [col-3]Query
qresult<- dbGetQuery(con,query)
dataset <- reactiveValues()
for (i in 1:nrow(qresult))  {  
   qresult1 <- dbGetQuery(con,qresult[i,3])  # fetching the data from db   
   dataset$qresult[i,2] <- qresult1 #assigning it to dataset so that it can be used later
}
#dataset$MOH<- qresult1 # this line works

运行时出现以下错误

Error in .getReactiveEnvironment()$currentContext() : 
  Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive function.)

【问题讨论】:

  • 此错误通常表明您正在尝试使用以某种方式依赖于来自用户 (ui.r) 的输入的东西(向量、data.frame 等)而不将其放入反应式表达式中.其中哪一部分是从 ui.r 输入的?可以贴一下ui文件的相关部分吗?
  • dataset$qresult 触发了这个,至少在我看来是这样的。您可以在反应代码之外分配给dataset$foo。你不能做的是阅读dataset$foo。我认为在这种情况下,即使您尝试改变 dataset$qresult,它也算作读取和写入。无论如何,这通常是一个坏主意,我们为dataset$foo &lt;- 1 设计而不是dataset$foo[1] &lt;- 1dataset$foo$baz &lt;- 1。即使这样有效,我也不确定它是否会触发反应。
  • 我会做的是在一个普通的旧变量中构建qresult,然后在完成后将其分配给dataset
  • 问题在于 dataset$qresult[i,2]

标签: r shiny shiny-server


【解决方案1】:

我在 Shiny 中也有同样的错误

错误样本

beta_reactive <- reactive({input$beta})
beta_coeff <- beta_reactive()

output$distPlot <- renderPlot({...})

解决方案

beta_reactive <- reactive({input$beta})
output$distPlot <- renderPlot({
    ...
    beta_coeff <- beta_reactive()    
    ...
})     

反应性内容似乎是一个函数 renderPlot()。 可能是反应性的,因为它与输出交互..

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2019-01-10
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    相关资源
    最近更新 更多