Функция среды Shiny - PullRequest
       6

Функция среды Shiny

1 голос
/ 30 апреля 2020

Я делаю приложение Shiny, и последний кусок, который я хочу, - это возможность пользователю вводить числовые значения c для некоторых параметров. До этого эти параметры были необработанными и находились непосредственно внутри одной функции. Все работало нормально.

Так что весь код предназначен для запуска "big_function". Эта "big_function" использует много других функций, которые загружаются с source в начале кода. После этого все загруженные функции появляются в глобальной среде.

"intermediaire_function" - это то, что мне нужно изменить, чтобы разрешить новые параметры. В моем "big_function", "intermediaire_function" появляется много раз, в разных функциях. Чтобы избежать слишком большого количества изменений в коде, а также чтобы избежать слишком большого количества параметров в моей «большой_функции» (на самом деле их больше 3), я подумал о создании «intermediaire_function_wParam», а в коде определил новую «intermediaire_function». "как показано ниже, с требуемыми параметрами.

Но затем, когда я запускаю приложение, я получаю ошибку, потому что моя" big_function "не может найти" intermediaire_function ", которая ему нужна. Если я "проверю" новую функцию "intermediaire_function" вручную и снова запущу приложение, оно будет работать.

Итак, похоже, когда я определяю свою новую функцию "intermediaire_function", блестящий не помещает ее в глобальное окружение, как это происходит с source.

Я пытался определить его до ui, в разных местах, но ничего не работает, и я не понимаю, почему.

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

list_package <- c("shiny", "shinythemes", "tidyverse", "readxl", "openxlsx")

filenames <- list.files("R functions/", pattern="*.R", full.names=TRUE)
sapply(filenames, source)


ui <- fluidRow(
     column(4,
            numericInput("a_ST_TM", value = 0.25, min = 0, max = 1, step = 0.05)
     ),
     column(4, offset = 1,
            numericInput("b_ST_TM", value = 0.15, min = 0, max = 1, step = 0.05)
     ),
     column(3, 
            actionButton("run_global", "Run")
            )
   )


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

  intermediaire_function <- function(n, Tail){
    intermediaire_function_wParam(n, Tail, a_ST = 0.5, b_ST =  0.1)
    # a_ST = input$a_ST_TM, b_ST = input$b_ST_TM)
  }

  observeEvent(input$run_global, {
    big_function(input$path_res, input$path_prem, input$select_year)
    })
}

shinyApp(ui = ui, server = server)

Любая помощь будет принята с благодарностью.

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