Я новичок в модулях Shiny. Я пытаюсь вызвать функцию (не модуль) из одного из моих модулей. Я хотел бы передать содержимое моих текущих реактивных значений (в моем модуле) в качестве аргументов в функцию.
Функция создает команду запроса sql на основе номера mrn, даты начала и окончания, которые должны быть переданы в функцию из 'modemtab'.
это ошибка, которую я получаю: Ошибка в .getReactiveEnvironment()$currentContext(): операция не разрешена без активного реактивного контекста. (Вы пытались сделать что-то, что можно сделать только внутри реактивного выражения или наблюдателя.)
Я понимаю, что это потому, что я передаю в функцию реактивные значения, а не их содержимое. Мой вопрос в том, как я могу передать содержимое этих реактивных значений.
Я включил часть моего кода здесь.
Спасибо.
app_server <- function(input, output,session) {
.
.
# getting csvupload_values from the first module and feeding it into the next.
csvupload_values <- callModule(csvupload, 'csv-upload')
callModule(modemtab,'mrntab', csvupload_values)
modemtab <- function(input, output, session, csvupload_values){
# the ouput$query is made in the UI part, but it's not the cause of issue.
output$query <- renderText({
if(!is.null(csvupload_values$file_uploaded())){
make_query(mrns = csvupload_values$file_uploaded()$mrns,
startDate = csvupload_values$dates()[1],
endDate = csvupload_values$dates()[2])
}
#This is the function called from within the second module (modemtab)
#this function is saved as a separate file in R folder
make_query <- function(...){
glue_sql("
select *
FROM table
WHERE
rgn_cd = {`rgn_cd`}
AND prdct_lne_cd = {`lob`}
AND ENCTR_STRT_TS >= {`startDate`}
AND ENCTR_END_TS <= {`endDate`}
"
,...
,.con = DBI::ANSI())
}
csvuploadUI <- function(id){
ns <- NS(id)
tagList(
fileInput(ns('file'), "Choose CSV File",
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")),
dateRangeInput(
ns('mrn_date_range'), label = 'Select the range of date:',
start = NULL, end = NULL, min = NULL,
max = NULL, format = "mm/dd/yyyy",
startview = "month", weekstart = 0,
language = "en", separator = " to ", width = NULL),
# Input: Checkbox if file has header ----
checkboxInput(ns('header'), "Header", TRUE)
)
}
# Module Server
csvupload <- function(input, output, session){
userFile <- reactive({
# If no file is selected, don't do anything
validate(need(input$file, message = FALSE))
input$file
})
dataframe <- reactive({
read.csv(userFile()$datapath,
header = input$header)
})
csvupload
? Помочь было бы проще. - person Stéphane Laurent   schedule 07.06.2019