如何观察和跟踪shiny中两个Renderi元素的单个值

如何观察和跟踪shiny中两个Renderi元素的单个值,r,shiny,reactive,R,Shiny,Reactive,这是一个简单的应用程序,用户可以键入(NumericiInput,bpm_numeric)或滑动(sliderInput,bpm_slider)输入值。这两个UI元素应与任一选项保持同步。但是,输出只需要跟踪一次。下面我跟踪了两次,但我只需要用户提供的“选择/输入”的一份副本。我认为我需要使用反应值,但我不确定该方法 library(shiny) ui <- fluidPage( titlePanel("Reverb & Delay Calculator"),

这是一个简单的应用程序,用户可以键入(NumericiInput,bpm_numeric)或滑动(sliderInput,bpm_slider)输入值。这两个UI元素应与任一选项保持同步。但是,输出只需要跟踪一次。下面我跟踪了两次,但我只需要用户提供的“选择/输入”的一份副本。我认为我需要使用
反应值
,但我不确定该方法

library(shiny)

ui <- fluidPage(

    titlePanel("Reverb & Delay Calculator"),

    sidebarLayout(
        sidebarPanel(
            uiOutput("bpm_numeric"),
            uiOutput("bpm_slider")
        ),
        mainPanel(
            p("Numeric value is:"),
            verbatimTextOutput("numeric_val"),
            p("Slider value is:"),
            verbatimTextOutput("slider_val")
        )
    )
)

server <- function(input, output, session) {

    output$bpm_numeric = renderUI({
        numericInput(
            "bpm_numeric",
            "BPM Numeric",
            value = 60, min = 40, max = 300
        )
    })

    output$bpm_slider = renderUI({
        sliderInput(
            "bpm_slider",
            "BPM Slider",
            value = 60, min = 40, max = 300
        )
    })

    # See how I can track "both", but really I only need to track "one" since
    # they should stay in-sync with one another. Maybe reactiveValues???
    output$numeric_val <- renderText({ input$bpm_numeric })
    output$slider_val <- renderText({ input$bpm_slider })

    observeEvent(input$bpm_numeric, {
        val = input$bpm_numeric
        updateSliderInput(session, "bpm_slider", value = val)
    })

    observeEvent(input$bpm_slider, {
        val = input$bpm_slider
        updateNumericInput(session, "bpm_numeric", value = val)
    })

}

shinyApp(ui = ui, server = server)
库(闪亮)

ui这里有一个想法。它可以概括一点,但它仍然依赖于您完全知道要以这种方式组合哪些ID

当前示例的Mods:


  • 定义一个全局
    defmp如果您只需要响应其中一个为什么有两个
    renderText
    块?
    observeEvent
    块确保它们保持同步,从那里开始,需要该值的任何东西都应该只能依赖其中一个。为什么不删除其中一个
    renderText
    输出?@r2evans-我想我是想概括,而不是“选择”其中一个?我同意这个选择是任意的,但我想有一些方法可以将其抽象化,而不是锁定在一个特定的选择上?也许我遗漏了你所说的一些内容,但对我来说,通用的解决方案恰恰是“只依赖其中一个”。在SQL中,您有一个
    coalesce
    ,它只给您第一个非null的参数;看起来你想要类似的东西。坦白地说,我没有发现这有什么用处,因为:(1)我知道所有候选人的id,所以可以选择一个,(2)我控制所有候选人的最新信息。在一个更复杂的例子中,尝试有条件地依赖多个元素很容易导致重复依赖,最多会导致闪烁,可能是不必要的计算。您是在尝试概括“如何使用该数字”,还是要确保“2个或多个UI元素与同一值保持同步”?