Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 观察多个动作按钮_R_Events_Button_Eventtrigger_Action Button - Fatal编程技术网

R 观察多个动作按钮

R 观察多个动作按钮,r,events,button,eventtrigger,action-button,R,Events,Button,Eventtrigger,Action Button,我是R开发的新手,我正在为如何实现这一目标而奋斗。我有一段代码,我观察到两个动作按钮等待点击。现在我想知道if语句中单击了哪一个,但我的实现不起作用。我已经找到了一些可能的解决办法,但没能找到。有人能帮我一下吗?谢谢 observeEvent({c(input[["button1"]], input[["button2"]])}, { output$mean<- renderPlotly({ if(input[["but

我是R开发的新手,我正在为如何实现这一目标而奋斗。我有一段代码,我观察到两个动作按钮等待点击。现在我想知道if语句中单击了哪一个,但我的实现不起作用。我已经找到了一些可能的解决办法,但没能找到。有人能帮我一下吗?谢谢

observeEvent({c(input[["button1"]], input[["button2"]])}, {        

      output$mean<- renderPlotly({            

       if(input[["button1"]]){ 

           output_mean(out(), start_date(), geo(), language(), grupo(), TRUE, "button1")

        }else if(input[["button2"]]){

           output_mean(out(), start_date(), geo(), language(), grupo(), TRUE, "button2")

        }
      })

    #}
  })
observeEvent({c(输入[[“按钮1”]],输入[[“按钮2”]]),{
输出$mean两件事:

  • render*
    函数本质上是被动的,因此它们不应该嵌套在另一个函数中。在这种情况下,它已经能够在不添加任何内容的情况下进行反应

  • 动作按钮的工作原理是每次按下按钮时增加其值。这意味着,如果用户单击按钮的速度快于R的反应速度,则实际上可能会增加2(不太可能,但可能可行)。按钮值更改的动作(增加)是什么触发了反应,所以您需要知道前面的值是什么,才能知道单击了哪一个(假设只有一个)

请尝试以下操作:

server <- function(input, output, session) {
  buttonstates <- reactiveValues(one=0, two=0)
  output$mean <- renderPlotly({
    req(input$button1, input$button2)
    if (input$button1 != buttonstates$one) {
      buttonstates$one <- input$button1
      output_mean(out(), start_date(), geo(), language(), grupo(), TRUE, "button1")
    } else if (input$button2 != buttonstates$two) {
      buttonstates$two <- input$button2
      output_mean(out(), start_date(), geo(), language(), grupo(), TRUE, "button2")
    }
  })
}
(如果您不熟悉
shinny::req
,如果
req
uired变量不是
shinny::isTruthy
定义的“truthy”,它将阻止块触发。这是一种防止在shinny启动和/或其他问题期间过早触发的简便方法。)

两件事:

  • render*
    函数本质上是被动的,因此它们不应该嵌套在另一个函数中。在这种情况下,它已经能够在不添加任何内容的情况下进行反应

  • 动作按钮的工作原理是每次按下按钮时增加其值。这意味着,如果用户单击按钮的速度快于R的反应速度,则实际上可能会增加2(不太可能,但可能可行)。按钮值更改的动作(增加)是什么触发了反应,所以您需要知道前面的值是什么,才能知道单击了哪一个(假设只有一个)

请尝试以下操作:

server <- function(input, output, session) {
  buttonstates <- reactiveValues(one=0, two=0)
  output$mean <- renderPlotly({
    req(input$button1, input$button2)
    if (input$button1 != buttonstates$one) {
      buttonstates$one <- input$button1
      output_mean(out(), start_date(), geo(), language(), grupo(), TRUE, "button1")
    } else if (input$button2 != buttonstates$two) {
      buttonstates$two <- input$button2
      output_mean(out(), start_date(), geo(), language(), grupo(), TRUE, "button2")
    }
  })
}

(如果您不熟悉
shinny::req
,如果
req
uired变量不是
shinny::isTruthy
定义的“truthy”,它将阻止块触发。这是防止在shinny启动和/或其他问题期间过早触发的简便方法。)

为什么要将
渲染*
嵌套在
观察*
中?看起来相当冗余和复杂。(这并不能解决您的问题,但可能会阻止以后的其他问题。)我正在考虑回答,然后我注意到,你选择了不接受为你提供的许多答案中的任何一个。当然,你是,但同样,我选择不鼓励这种片面的关系。(如果你不知道,那么现在你知道了,请接受你问题的答案,回馈社区。)@r2evans很抱歉,我不知道这一点。我是新来的,所以我确实知道这一点。但我已经接受了我之前问题的答案。谢谢!为什么要在
观察*
中嵌套
渲染*
?看起来相当多余和复杂。(这并不能解决您的问题,但可能会阻止以后的其他问题。)我正在考虑回答,然后我注意到,你选择了不接受为你提供的许多答案中的任何一个。当然,你是,但同样,我选择不鼓励这种片面的关系。(如果你不知道,那么现在你知道了,请接受你问题的答案,回馈社区。)@抱歉,我不知道。我是新来这里的,所以我确实知道。但是我已经接受了我之前问题的答案。谢谢!非常感谢,@r2evans。根据你的解释,我解决了我的问题。非常感谢。非常感谢,@r2evans。根据你的解释,我解决了我的问题。非常感谢。