使用 reactive 在 shinyServer 中调用函数

Invoke function in shinyServer using reactive

我有一个闪亮的应用程序,它根据用户输入调用外部函数。此函数根据输入更新数据框,以便它可用于渲染绘图。

获取数据函数()

getData= function(inpName)
{
   // a piece of code based on inpName
}

shinyUI.R

library(shiny)
shinyUI(fluidPage(
  titlePanel("title"),
  sidebarLayout(
    sidebarPanel(
      textInput("name","Enter a name")),
    mainPanel())
))

shinyServer.R

library(shiny)
shinyServer(function(input,output)
  {
  getData=reactive({getData(input$name) })
})

无论我尝试什么,我似乎都无法让 shinyServer 调用该函数并更新 df。有人可以建议我做错了什么吗?感谢任何帮助。

您不想在服务器函数中覆盖 getData

library(shiny)
getData <- function(inpName) 
    if (inpName %in% names(mtcars)) mtcars[,inpName] else NULL

shinyApp(
    shinyUI(fluidPage(
        titlePanel("title"),
        sidebarLayout(
            sidebarPanel(
                textInput("name","Enter a name")),
            mainPanel(
                verbatimTextOutput('tab')
            ))
    )),
    shinyServer(function(input, output, session) {
        ## The first way
        ## dat <- reactive({ getData(input$name) })

        ## The other way
        vals <- reactiveValues(dat=NULL)
        observeEvent(input$name, vals$dat <- getData(input$name))

        output$tab <- renderPrint({ summary(vals$dat) })
    })
)