连接相互依赖的闪亮输入值
Connect mutually dependent shiny input values
我有一个问题。我想要一个闪亮的应用程序,它可以有两个用于数值的输入小部件。我们称它们为 X 和 P。
一个让用户输入数字,另一个让用户输入百分比变化。两个数字都可以用另一个计算。
P*C+C=X,例如 C 为 1000。
我想做的是当用户更改 P 然后 X 更改,反之亦然(用户更改 X 和 P 更改)
我知道如何以一种方式做到这一点,但不知道如何以两种方式做到这一点。
有人知道如何解决这种情况吗?
有几种方法可以做到这一点,这里是一种方法:
library(shiny)
u <- shinyUI(fluidPage(
titlePanel("Mutually Dependent Input Values"),
sidebarLayout(
sidebarPanel(
numericInput("X", "X",2000),
numericInput("P", "P",1),
numericInput("C", "C",1000)
),
mainPanel(
verbatimTextOutput("result")
)
)
))
s <- shinyServer(function(input, output,session) {
observeEvent(input$P,{
newX <- input$P*input$C + input$C
updateNumericInput(session, "X", value = newX)
})
observeEvent(input$X,{
newP <- (input$X - input$C)/input$C
updateNumericInput(session, "P", value = newP)
})
output$result<-renderPrint({
val <- input$P*input$C + input$C
print(sprintf("X:%.0f P:%.0f C:%.0f - P*C + C:%.0f",input$X,input$P,input$C,val))
})
})
shinyApp(u,s)
产量:
不确定这是最好的方法,如果您开始时处于不一致的状态,它会出现 - 需要考虑如何抑制这种情况。
我有一个问题。我想要一个闪亮的应用程序,它可以有两个用于数值的输入小部件。我们称它们为 X 和 P。 一个让用户输入数字,另一个让用户输入百分比变化。两个数字都可以用另一个计算。
P*C+C=X,例如 C 为 1000。
我想做的是当用户更改 P 然后 X 更改,反之亦然(用户更改 X 和 P 更改) 我知道如何以一种方式做到这一点,但不知道如何以两种方式做到这一点。 有人知道如何解决这种情况吗?
有几种方法可以做到这一点,这里是一种方法:
library(shiny)
u <- shinyUI(fluidPage(
titlePanel("Mutually Dependent Input Values"),
sidebarLayout(
sidebarPanel(
numericInput("X", "X",2000),
numericInput("P", "P",1),
numericInput("C", "C",1000)
),
mainPanel(
verbatimTextOutput("result")
)
)
))
s <- shinyServer(function(input, output,session) {
observeEvent(input$P,{
newX <- input$P*input$C + input$C
updateNumericInput(session, "X", value = newX)
})
observeEvent(input$X,{
newP <- (input$X - input$C)/input$C
updateNumericInput(session, "P", value = newP)
})
output$result<-renderPrint({
val <- input$P*input$C + input$C
print(sprintf("X:%.0f P:%.0f C:%.0f - P*C + C:%.0f",input$X,input$P,input$C,val))
})
})
shinyApp(u,s)
产量:
不确定这是最好的方法,如果您开始时处于不一致的状态,它会出现 - 需要考虑如何抑制这种情况。