允许Shiny numericInput依赖于另一个numericInput

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了允许Shiny numericInput依赖于另一个numericInput相关的知识,希望对你有一定的参考价值。

我正在创建一个Shiny应用程序,我希望numericInput的默认值依赖于另一个默认值,以前定义的numericInput

例如,

在这里,我希望(2)的numericInput元素是(1)的倒数,而不必事先指定valueminmaxstep的值:

(1) numericInput("obs1", "Label1", value = 10, min = 10, max = 20, step = 1)

(2) numericInput("obs2", "Label2", value = 1/10, min = 1/10, max = 1/20, step = 1)

以上(1)是先前定义的numericInput

有一个简单的方法吗?

答案

如果你想让input对象拥有动态参数,你需要使用uiOutput,这样你就可以在运行时生成它们(在server.R中)。

示例:在第一列中,您可以设置minmaxvalue。修改其中任何一个都会使用新参数值呈现obs1obs2

library(shiny)

ui <- fluidPage(
  column(6, 
         tags$h2("Set parameters"),
         numericInput("value", "Value", value = 20, min = 10, max = 60, step = 10),
         numericInput("min", "Min", value = 10, min = 0, max = 30, step = 10),
         numericInput("max", "Max", value = 40, min = 40, max = 60, step = 10)
  ),
  column(6,
         uiOutput("ui")
  )
)

server <- function(input, output, session) {
  output$ui <- renderUI( {
    tagList(
      tags$h2("Numeric inputs that depend on reactive data"),
      numericInput("obs1", "Label1", value = input$value, min = input$min, max = input$max, step = 1),
      numericInput("obs2", "Label2", value = input$value + 5, min = input$min - 5, max = input$max + 5, step = 1)
    )
  })
}

shinyApp(ui, server)

请注意,当您想将多个输入元素传递给tagList时,需要在renderUI中包装元素。

以上是关于允许Shiny numericInput依赖于另一个numericInput的主要内容,如果未能解决你的问题,请参考以下文章

R SHINY:根据 selectInput/numericInput 选项清除/更新 mainPanel

闪亮:在numericInput中右键单击提供上下文菜单?

Shiny:基于 selectizeInput 的 conditionalPanel 问题

datagridviewcombobox columns 依赖于另一列

Mysql 条件 MAX 或 MIN 依赖于另一列值

Python 使用依赖于另一列的值的复杂函数聚合时间序列