输入Shiny App输入后执行脚本

时间:2020-03-15 23:33:19

标签: r shiny

我对Shiny相对较新,并且正在尝试创建一个应用程序,该应用程序创建一个全局变量,然后将其传递给R脚本。这是我的闪亮应用程序的示例:

library(shiny)
 
ui <- fluidPage(
  titlePanel("Hello"),
  br(),
  h3("Welcome"),
  
  sidebarLayout(
    
    sidebarPanel(
      h1("Enter parameter value"),
      selectInput("datamodel", "Update Data Model",
                  choices = c("Yes", "No"),
                  selected = "No")
    ),
    
    mainPanel(
      h1("Output")
      
    )
  ))

# Define server logic
server <- function(input, output) {
  
  observe({
    Update_Data_Model <<- input$datamodel
  })  
  
  source("Authentication.R")
  
}


# Run the application shinyApp(ui = ui, server = server) 

用户界面已创建,我可以创建一个名为 Update_Data_Model 的全局变量,以传递给名为 Authentication.R 的R脚本。 strong> ,但是R脚本会在我有时间在UI中输入输入变量之前运行。

一旦在UI中输入了输入变量,是否可以执行R脚本?

1 个答案:

答案 0 :(得分:0)

您可以在输入本身上使用observeEvent,因此它将仅在输入更改时执行:

library(shiny)

ui <- fluidPage(
  titlePanel("Hello"),
  br(),
  h3("Welcome"),

  sidebarLayout(

    sidebarPanel(
      h1("Enter parameter value"),
      selectInput("datamodel", "Update Data Model",
                  choices = c("Yes", "No"),
                  selected = "No")
    ),

    mainPanel(
      h1("Output")

    )
  ))

# Define server logic
server <- function(input, output) {

    observeEvent(input$datamodel, {

        Update_Data_Model <<- input$datamodel

        if(input$datamodel == 'Yes') {

            source("Authentication.R")

        }

    })

}

shinyApp(ui = ui, server = server)

考虑使用操作按钮而不是下拉菜单,这对您和您的用户可能会更直观:

library(shiny)

ui <- fluidPage(

    actionButton("mybutton", "Update Data Model")

)

server <- function(input, output) {

    observeEvent(input$mybutton, {

        source("Authentication.R")

    })

}

shinyApp(ui = ui, server = server)