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