我想创建一个闪亮的子集数据框,以在我的策略中输出各种过滤的选项。在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))
答案 0 :(得分:0)
我最好的猜测是您需要使用observe
。 x
和y
变量应位于observe
内,类似于以下内容:
observe({
y <- subsetTest()$RISK_ADJUSTED_HBR
x <- subsetTest()$PANEL_SIZE
})
使用这样的全局变量不是一个好的选择。我建议您将x
和y
变量放入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()))
此外,最好从下一次开始提供一个可重现的最小示例,以便轻松为您提供帮助。