【发布时间】:2016-06-10 06:25:20
【问题描述】:
R 初学者,在这里闪耀! 试图做一个最小的工作示例......我想检查反应输入值的条件。我做错了什么?
library(shiny)
ui<-fluidPage(
numericInput(inputId="a", label=NULL, value=0),
textOutput(outputId="out")
)
server <- function(input, output) {
x <- reactive(input$a)
if (x() < 4)
{y<-1}
else
{y<-0}
output$out <- renderText({y})
}
shinyApp(ui = ui, server = server)
错误信息:
在没有活跃的反应上下文的情况下不允许操作。 (你试过 做一些只能从反应式内部完成的事情 表达式或观察者。)
【问题讨论】:
-
如消息所述,您只能在反应式上下文中使用
x()(例如,在observe、local、render....函数中)。此外,您的y值必须在function之外定义,并且与使用它的级别相同或更高。 -
@warmoverflow :所以没有办法检查反应值的条件?抱歉,对 R 来说超级新手
-
您可以但必须在其中一个上下文中。例如,您可以在
renderText内查看 -
BTW
input$a本身已经是响应式的,因此您不需要用reactive将其括起来并分配给新变量。 -
@warmoverflow:我明白了。那真不幸。这是尝试在renderOutputs之外进行大量计算的最小工作示例,因为我的真实代码(1)更长,并且(2)有多个基于y的输出,并且在每个renderOutput中重新计算它真的很慢.谢谢