闪亮输入作为另一个输入的默认值

Shiny input as default value for another input

是否可以将两个输入的乘积作为另一个输入的默认值?

更复杂的是,是否可以在计算中包含一个if循环?

示例:

library(shiny) 

ui <- fluidPage(
numericInput("factor","Factor:")
numericInput("delta","Delta:"),
numericInput("size","Size:"),
numericInput("result","result:",value = input$delta*input$size)
) 

高级:

如果 input$factor 不同于 100,我希望 input$delta*input$size 乘以 input$factor

我试图通过将值连接到输出然后将最新的作为输入来传递服务器中的值,但它不起作用(我会说显然)。

有什么帮助吗?

如果我对问题的理解正确,你想在 delta and/or size 更改时更新 numericInput 因子。

observe({
    if(as.numeric(isolate(input$factor)) != 100){ 
        updateNumericInput(inputId = "factor", value = input$delta*input$size)
    }
})

您需要隔离 input$factor,否则每次 factor 被用户更改时它总是会恢复到 size*delta

要使一个输入依赖于另一个输入的值,您需要在服务器中指定它。我通常使用 uiOutput()renderUI

渲染结果
library(shiny) 


shiny::shinyApp(ui = fluidPage(
  numericInput("factor","Factor:", 1),
  numericInput("delta","Delta:", 1),
  numericInput("size","Size:", 1),
  uiOutput('res')
  
), server = function(input, output){
  output$res <- renderUI({
    numericInput("result","result:",value = input$delta*input$size)
  })
})