【问题标题】:Operation Not Allowed Active Reactive Context - Subset in RShiny操作不允许活动反应上下文 - R Shiny 中的子集
【发布时间】:2019-01-10 18:03:53
【问题描述】:

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

# 在 UI 中按计划过滤

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))

【问题讨论】:

    标签: r shiny subset reactive


    【解决方案1】:

    我最好的猜测是您需要使用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()))
    

    另外,您最好在下次提供一个可重复的最小示例,以便为您提供帮助。

    【讨论】:

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