изменение переменных отдельного R-скрипта в блестящем приложении - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть набор сценариев, которые запускаются снизу, с аспектами окончательного вывода, на которые влияют строки 2-4

setwd() 
inputyear = ""
inputmonth = ""
dataType = ""

source("1.R")
source("2.R")
source("3.R") 
source("4.R")
source("5.R")

#input required file name
saveWorkbook(wb, "Workbook.xlsx", overwrite = TRUE)

Я бы хотел иметь возможность изменить год ввода, ввод month, dataType и имя книги, созданной source () 1-5 из блестящего приложения, а затем запустите соответствующие файлы и создайте файл excel.

Пока у меня есть следующий код, который не производит никаких ошибок, но не функционирует как требуется. Я включил только раздел «сервер» в коде для экономии места, и это та часть, с которой мне нужна помощь, если это возможно;

ui<-shinyUI(fluidPage(theme = shinytheme("flatly"),

                      tags$head(
                        tags$style(HTML(
                          ".shiny-output-error-validation {
                          color; green;
                          }
                          "))
                        ),

                      basicPage(
                        headerPanel("Workbook"),
                        sidebarPanel(
                          selectInput("inputmonth","Select Publication Month",c("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC")),
                          selectInput("inputyear","Select Year",c("2018/19","2019/20","2020/21")),
                          selectInput("dataType","Select Version",c("provisional","final"))),
                        textInput("WorkBookName","Enter File Name (include .xlsx)"),
                        actionButton("Generate", "Generate Workbook"))
                        ))


server <- function(input, output, session){
  observeEvent(input$Generate, {
    validate(need(input$WorkBookName != "", "Please enter file name"))

    req(input$inputmonth, input$inputyear, input$dataType, input$WorkBookName)

    inputyear = input$inputmonth
    inputmonth = input$inputyear
    dataType = input$dataType

    source("1.R",local = TRUE)
    source("2.R", local = TRUE)
    source("3.R", local = TRUE) 
    source("4.R", local = TRUE)
    source("5.R", local = TRUE)


    saveWorkbook(wb, paste0(input$WorkBookName, ".xlsx"), overwrite = TRUE)
  })
}

shinyApp(ui, server)

Как я могу изменить сценарий сервера, чтобы получить желаемую функциональность?

edit: добавлен полный скрипт, удалены имена

1 Ответ

0 голосов
/ 06 февраля 2020

Вам как-то нужно будет запустить выполнение вашего реактивного кода. Реактивный код выполняется только в том случае, если он был признан недействительным. Пожалуйста, смотрите this для получения дополнительной информации.

В следующем приложении код будет выполнен после нажатия кнопки Save Workbook. Я не знаю ваш пользовательский интерфейс и источники R-скриптов, поэтому вы можете заменить здесь:

library(shiny)
library(openxlsx)
library(shinythemes)

ui <- shinyUI(fluidPage(
  theme = shinytheme("flatly"),

  tags$head(tags$style(
    HTML(".shiny-output-error-validation {
                          color; green;
                          }
                          ")
  )),
  basicPage(
    headerPanel("Workbook"),
    sidebarPanel(
      selectInput(
        "inputmonth",
        "Select Publication Month",
        toupper(month.abb)
      ),
      selectInput("inputyear", "Select Year", c("2018/19", "2019/20", "2020/21")),
      selectInput("dataType", "Select Version", c("provisional", "final"))
    ),
    textInput("WorkBookName", "Enter File Name (include .xlsx)"),
    actionButton("Generate", "Generate Workbook"),
    uiOutput("test")
  )
))

server <- function(input, output, session) {
  observeEvent(input$Generate, {
    req(input$inputmonth,
        input$inputyear,
        input$dataType,
        input$WorkBookName)

    inputyear = input$inputmonth
    inputmonth = input$inputyear
    dataType = input$dataType

    # source("1.R", local = TRUE)
    # source("2.R", local = TRUE)
    # source("3.R", local = TRUE)
    # source("4.R", local = TRUE)
    # source("5.R", local = TRUE)
    # 
    # saveWorkbook(wb, paste0(input$WorkBookName, ".xlsx"), overwrite = TRUE)
    output$test <- renderUI("Everything fine...")
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...