不允许的操作主动被动上下文-RShiny中的子集

时间:2018-08-02 21:44:04

标签: r shiny subset reactive

我想创建一个闪亮的子集数据框,以在我的策略中输出各种过滤的选项。在UI中,我的变量PLAN_DIM_CK是我的不同选择,每个PLAN_DIM_CK编号都是我要作为其子集的编号。运行代码时,出现错误“没有活动的反应式上下文就不允许进行操作(您试图做只能在反应式表达式或观察者内部完成的操作。)
谁能帮助我解决这个问题所在?

#在用户界面中按计划过滤

selectInput(inputId = "PlanID",
              label = "Select a Plan",
              choices = unique(vbc2$PLAN_DIM_CK)

在服务器中

#within server 

subsetTest <- reactive ({
    subset(vbc2, PLAN_DIM_CK == input$planID)})

  y <- subsetTest()$RISK_ADJUSTED_HBR
  x <- subsetTest()$PANEL_SIZE


output$distPlot <- renderPlot({

    ggplot(data = subsetTest(), aes(x=y,y=x))

1 个答案:

答案 0 :(得分:0)

我最好的猜测是您需要使用observexy变量应位于observe内,类似于以下内容:

observe({
 y <- subsetTest()$RISK_ADJUSTED_HBR
  x <- subsetTest()$PANEL_SIZE

})

使用这样的全局变量不是一个好的选择。我建议您将xy变量放入renderPlot内,或从中创建reactive变量。

将其放入renderPlot内可能是这样的:

output$distPlot <- renderPlot({
 y <- subsetTest()$RISK_ADJUSTED_HBR
  x <- subsetTest()$PANEL_SIZE
    ggplot(data = subsetTest(), aes(x=y,y=x))
)}

使用reactive,您可以执行以下操作:

 subsetTest <- reactive ({
    subset(vbc2, PLAN_DIM_CK == input$planID)})

  y <- reactive({subsetTest()$RISK_ADJUSTED_HBR})
  x <- reactive({subsetTest()$PANEL_SIZE})


output$distPlot <- renderPlot({

    ggplot(data = subsetTest(), aes(x=y(),y=x()))

此外,最好从下一次开始提供一个可重现的最小示例,以便轻松为您提供帮助。