输入和反应上下文

时间:2018-02-02 09:16:00

标签: r shiny reactive

我正在构建一个有光泽的应用程序,但是从我的工作开始就有一些我不明白的东西。我想知道如何在服务器函数中使用输入变量而不将它们放在renderSomething ...

例如,这是我在服务器功能中的一小部分代码:

server <- function(input,output){

output$text <- renderText({"My text"})

updating <- reactive( {if (input$nbenfants==0){
 updateNumericInput(session,"n2",value=0)
 updateNumericInput(session,"n3",value=0)
 updateNumericInput(session,"n4",value=0)
 updateNumericInput(session,"n5",value=0)
 updateNumericInput(session,"n6",value=0)
 updateNumericInput(session,"n7",value=0)
 updateNumericInput(session,"n8",value=0)
}})

如果条件输入$ nbenfants == 0为true,我想更新一些参数。但我无法弄清楚如何“储存”结果?当我尝试在(updates())之后调用该函数时,R返回错误:

.getReactiveEnvironment()$ currentContext()中的错误:   没有活动的反应上下文,不允许操作。 (你试图做一些只能在反应式表达式或观察者内部完成的事情。) 错误:[on_request_read]连接由对等方重置 错误:[on_request_read]连接由peer重置

1 个答案:

答案 0 :(得分:0)

我认为你应该使用observeEvent在输入$ nbenfant值改变时动作:

server <- function(input,output){

output$text <- renderText({"My text"})

observeEvent(input$nbenfant,{
if(input$nbenfant ==0) {
updateNumericInput(session,"n2",value=0)
updateNumericInput(session,"n3",value=0)
updateNumericInput(session,"n4",value=0)
updateNumericInput(session,"n5",value=0)
updateNumericInput(session,"n6",value=0)
updateNumericInput(session,"n7",value=0)
updateNumericInput(session,"n8",value=0)
}})

希望能够发挥作用

Gottavianoni