我正在做一个闪亮的应用程序,我想要的最后一块是用户能够为某些参数输入数值。在此之前,这些参数是原始的,直接在一个函数中。一切正常。
所以代码都是关于运行“big_function”的。source
这个“big_function”使用了在代码开头加载的许多其他函数。之后所有加载的函数都会出现在全局环境中。
“intermediaire_function”是我需要修改以允许新参数的功能。在我的“big_function”中,“intermediaire_function”多次出现在不同的函数中。为了避免代码中的太多变化,也为了避免我的“big_function”中的参数太多(实际上有3个以上),我想只创建一个“intermediaire_function_wParam”,并在代码中定义一个新的“intermediaire_function” " 如下所示,带有所需的参数。
但是,然后,当我运行应用程序时,我得到一个错误,因为我的“big_function”找不到它需要的“intermediaire_function”。如果我手动“验证”新的“intermediaire_function”,然后再次运行该应用程序,它就可以工作。
所以,看起来当我定义我的新“intermediaire_function”函数时,shiny 并没有将它放在全局环境中,就像它对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)
任何帮助将不胜感激。