闪亮输入作为另一个输入的默认值
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)
})
})
是否可以将两个输入的乘积作为另一个输入的默认值?
更复杂的是,是否可以在计算中包含一个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)
})
})