使用文本输入计算闪亮应用程序中另一个文本输入的值
Posted
技术标签:
【中文标题】使用文本输入计算闪亮应用程序中另一个文本输入的值【英文标题】:Using text input to calculate value for another text input in shiny app 【发布时间】:2021-10-25 23:08:02 【问题描述】:我想提供输入百分比或数值的选项。当用户输入两者之一时,我希望另一个自动填充。
所以对于代码:
textInput(DownDollars, "Downpayment (Dollars)", value = "", width = NULL, placeholder = NULL),
textInput(DownPercent, "Downpayment (Percent)", value = "", width = NULL, placeholder = NULL)
有没有办法使用这些输入的输出来替换value =
选项?
更新:以下代码不适用于使用另一个输入作为参考值:
ui <- fluidPage(
numericInput("HomePrice", "Home Price", value = ""),
numericInput("DownPaymentDollars", "Down Payment (Dollars)", value = "", width = NULL),
numericInput("DownPaymentPercent", "Down Payment (Percent)", value = "", width = NULL)
)
server = function(input, output, session)
#referenceValue <- 254
observeEvent(input$DownDollars,
updateNumericInput(session, "DownPaymentPercent", value = input$DownDollars * 100 / input$HomePrice)
)
observeEvent(input$DownPercent,
updateNumericInput(session, "DownPaymentDollars", value = input$DownPercent * input$HomePrice / 100)
)
shinyApp(ui, server)
【问题讨论】:
使用 updatetextInput 可能会有所帮助:shiny.rstudio.com/reference/shiny/0.14/updateTextInput.html 【参考方案1】:首先,使用numericInput
获取数值更容易。
以下代码可以满足您的需要:
library(shiny)
ui <- fluidPage(
numericInput("DownDollars", "Downpayment (Dollars)", value = "", width = NULL),
numericInput("DownPercent", "Downpayment (Percent)", value = "", width = NULL)
)
server = function(input, output, session)
referenceValue <- 254
observeEvent(input$DownDollars,
updateNumericInput(session, "DownPercent", value = input$DownDollars * 100 / referenceValue)
)
observeEvent(input$DownPercent,
updateNumericInput(session, "DownDollars", value = input$DownPercent * referenceValue / 100)
)
shinyApp(ui, server)
我定义了一个参考值来计算百分比,你可以根据需要定义这个值,例如取自另一个用户输入。
小心使用引号定义输入 ID。
编辑
当使用另一个numericInput
来获取参考值时,您需要观察这个新的numericInput
来更新计算。两个updateNumericInput
之一必须同时被两个observeEvent
触发(见this post explaining the syntax):
library(shiny)
ui <- fluidPage(
numericInput("HomePrice", "Home Price", value = ""),
numericInput("DownDollars", "Downpayment (Dollars)", value = "", width = NULL),
numericInput("DownPercent", "Downpayment (Percent)", value = "", width = NULL)
)
server = function(input, output, session)
observeEvent(
input$HomePrice
input$DownDollars
,
updateNumericInput(session, "DownPercent", value = input$DownDollars * 100 / input$HomePrice)
)
observeEvent(input$DownPercent,
updateNumericInput(session, "DownDollars", value = input$DownPercent * input$HomePrice / 100)
)
shinyApp(ui, server)
【讨论】:
这太好了,谢谢!如果参考号也来自用户输入,这将如何改变:numericInput("HomePrice", "Home Price", value = "")
简单地更改为value = input$DownDollars * 100 / input$HomePrice
似乎不起作用。
我更新了问题以显示我尝试使用另一个输入作为参考值。没有错误消息,它只是停止更新您正确工作的其他两个输入。
好的,这在启动应用程序时工作一次,但随后您必须观察参考值输入以更新 首付 输入。请参阅我的更新答案以进行尝试。
谢谢@julien.leroux5!这很好用!如果你能看一下,我已经发布了关于这个应用程序的另一个问题 (***.com/q/68957949/12886572)。以上是关于使用文本输入计算闪亮应用程序中另一个文本输入的值的主要内容,如果未能解决你的问题,请参考以下文章