Выполнить скрипт после ввода Shiny App - PullRequest
1 голос
/ 16 марта 2020

Я относительно новичок в 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 для передачи на мой R Сценарий называется Authentication.R , однако сценарий R запускается до того, как у меня есть время для ввода входной переменной в пользовательском интерфейсе.

Есть ли способ выполнить R Сценарий, когда входные переменные были введены в пользовательский интерфейс?

Спасибо.

Ва sh ваши руки / держать дистанцию ​​/ оставаться в безопасности.

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете использовать наблюдаемое на самом входе, так что оно будет выполняться только при изменении этого входа:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...