【问题标题】:R Shiny make two inputs equalR Shiny 使两个输入相等
【发布时间】:2017-03-23 17:26:41
【问题描述】:

当我按下一个动作按钮时,我想以某种方式使两个输入彼此相等。我的 Shiny Dashboard 中有几个选项卡,其中一些选项卡中有重复的数据输入。例如,在选项卡 1 中我们有一个 AGE 的输入,我们在选项卡 2 中有相同的输入。我想让它这样,如果我输入一个年龄值并单击“运行”(一个操作按钮),那么它会自动生成另一个选项卡中的年龄等于当前选项卡中的年龄。

我对使用 Shiny 真的很陌生,所以我尝试了几次使用响应式命令,但我不确定为什么它不起作用:

  reactive(  
if(input$runbutton==0){
input$numeric1=input$numeric2
})

该代码没有任何作用,它甚至不返回错误。

【问题讨论】:

  • 试试updateNumericInput()怎么样?

标签: r shiny


【解决方案1】:

您应该使用updateNumericInput() 来更改输入的值。此外,使用observeEvent() 跟踪按钮按下更有意义。这里是一个简单的示例应用程序

ui <- fluidPage(
    numericInput("numeric1","in1",1), 
    numericInput("numeric2","in2",2), 
    actionButton("runbutton", "set equal")
 )

server <- function(input, output, session) {
    observeEvent(  input$runbutton, {
        updateNumericInput(session, "numeric1", value=input$numeric2)
    })
}


shinyApp(ui=ui, server=server)

【讨论】:

  • 效果很好!非常感谢!我可以看到我们现在需要如何处理这些问题;但我想知道两件事是否可以。首先,我们究竟为什么要使用“会话”?我调查了它,但我找不到任何能真正告诉我它的作用的东西。另外,“reactive”和“observeEvent”有什么区别?似乎他们做同样的事情,但observeEvent是唯一对我有意义的事情哈哈
  • 我们必须使用 session 因为updateNumericInput 需要它。仅此而已。如果您是 Shiny 的新手,想要更好地了解 reactiveobserveEvent 可能会更好地查看 these training videos。这是一个无法在评论中真正解决的大话题。
猜你喜欢
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 2020-02-14
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多