闪亮的模块可能会对您有所帮助。
请看这里:https://shiny.rstudio.com/articles/modules.html
正如您在文章中所读到的,如果您将输入包装在 reactive() 函数中,则可以实现传递输入所需的功能。 (请参阅文章“编写服务器函数”部分的末尾)。
您将定义my_sum 函数如下:
(请注意,您必须使用变量 a 和 b 作为反应变量 a() 和 b() 并将结果包装在 reactive() 函数中。)
my_sum <- function(input, output, session, a, b) {
reactive(as.numeric(a()) + as.numeric(b()))
}
并且可以将其用作:
my_sum_reactive <- callModule(my_sum, "id", reactive(input$a), reactive(input$b))
然后可以用作:
my_sum_reactive()
可重现的例子:
library(shiny)
my_sum <- function(input, output, session, a, b) {
reactive(as.numeric(a()) + as.numeric(b()))
}
ui <- fluidPage({
fluidRow(
selectInput("a", "a", 1:3),
selectInput("b", "b", 1:3),
textOutput("txt")
)
})
server <- function(input, output, session) {
my_sum_reactive <- callModule(my_sum, "id", reactive(input$a), reactive(input$b))
output$txt <- renderText(paste0("The sum is: ", my_sum_reactive()))
}
shinyApp(ui, server)