gpt4 book ai didi

r - 无法将用户输入传递到 R Shiny 模块

转载 作者:行者123 更新时间:2023-12-04 11:46:41 24 4
gpt4 key购买 nike

我正在开发一个 Shiny 的应用程序,在加载时它会显示一个默认表。有一个用户输入,当我输入并单击运行时应该更新表格。而且当单击重置时,它应该显示默认表。截至目前,我能够查看默认表,当我单击运行按钮时没有任何 react 。

optimzation <- function(input, output, session, data,budget,run,reset) {

v <- reactiveValues(data = data)

observeEvent(run, {
v$data <- data %>% mutate(carb = mpg * budget)
})

observeEvent(reset, {
v$data <- data # your default data
})

output$mod_table <- DT::renderDataTable({
DT::datatable(v$data, filter = "top")
})
}

optimzationUI <- function(id) {
ns <- NS(id)
dataTableOutput(ns("mod_table"))

}

shinyApp(
ui = basicPage(
mainPanel(
numericInput("budget_input", label = h5("Total Budget"), value = 9000000),
actionButton("opt_run", "Run"),
actionButton("opt_reset", "Reset"),
tags$hr(),
optimzationUI("optimize")
)
),
server = function(input, output) {
demodata<-mtcars
callModule(optimzation,"optimize", demodata,budget=input$budget_input,run=input$opt_run,reset = input$opt_reset)

}
)


创建于 2019-02-13 由 reprex package (v0.2.1.9000)

最佳答案

将全局用户输入传递给 Shiny 的模块时,您似乎需要更加小心。似乎它会“破坏” react 性。您可以通过显式传递一个 react 对象来解决这个问题。这是更新的模块。注意添加的 ()获取当前的无功值。

optimzation <- function(input, output, session, data, budget,run,reset) {

v <- reactiveValues(data = data)

observeEvent(run(), {
v$data <- data %>% mutate(carb = mpg * budget())
})

observeEvent(reset(), {
v$data <- data
})

output$mod_table <- DT::renderDataTable({
DT::datatable(v$data, filter = "top")
})
}

optimzationUI <- function(id) {
ns <- NS(id)
DT::dataTableOutput(ns("mod_table"))
}

这是更改后的应用程序。注意明确的 reactive(input$....)
library(shiny)
library(dplyr)
shinyApp(
ui = basicPage(
mainPanel(
numericInput("budget_input", label = h5("Total Budget"), value = 9000000),
actionButton("opt_run", "Run"),
actionButton("opt_reset", "Reset"),
tags$hr(),
optimzationUI("optimize")
)
),
server = function(input, output) {
demodata<-mtcars
callModule(optimzation,"optimize",
data=demodata,
budget=reactive(input$budget_input),
run=reactive(input$opt_run),
reset = reactive(input$opt_reset))
}
)

关于r - 无法将用户输入传递到 R Shiny 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54677043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com