使用被动方式调用shinyServer中的函数

时间:2015-09-02 22:36:37

标签: r shiny shiny-server

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

getData function()

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。有人可以告诉我做错了什么吗?感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您不想覆盖服务器功能中的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) })
    })
)