我对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脚本?
答案 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)