/ / Conecte valores de entrada brillante mutuamente dependientes: r, input, brillante, interactivo, shinyapps

Conectar valores de entrada brillantes mutuamente dependientes: r, entrada, brillante, interactiva, shinyapps

Tengo un problema. Me gustaría tener una aplicación brillante que pudiera tener dos widgets de entrada para valores numéricos. Vamos a llamarlos X y P. Uno le permite al usuario introducir una cifra numérica y el otro una variación porcentual. Ambas cifras se pueden calcular utilizando la otra.

P * C + C = X con C siendo, por ejemplo, 1000.

Lo que me gustaría hacer es cuando el usuario cambia P y luego Xcambios y lo mismo al revés (el usuario cambia los cambios X y P) Sé cómo hacer esto de una manera pero no de dos maneras. ¿Alguien sabe cómo resolver esta situación?

Respuestas

2 para la respuesta № 1

Hay algunas maneras de hacer esto, aquí hay una:

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)

Flexible:

enter image description here

No estoy seguro de que esta sea la mejor manera, se produce si comienza en un estado inconsistente: debe pensar en cómo suprimir esto.