R Shiny - создать глобальный фрейм данных при запуске приложения
Я создаю блестящее приложение, и мне нужно перестраивать фрейм данных, который анализирует файл json каждый раз, когда приложение открывается (так как файл json изменится). Затем функции в приложении должны получить доступ к этому фрейму данных. Помещение кода прямо перед server.R фактически не создает фрейм данных. Другим способом было бы создать функцию, которая создает фрейм данных, и вызывать эту функцию каждый раз, когда мне нужен фрейм данных, но это воссоздает фрейм данных каждый раз, когда мне это нужно.
Есть ли способ создать фрейм данных один раз и сохранить его в имени переменной, к которому могут обращаться функции в остальной части приложения при необходимости?
Прямо сейчас мой код в server.R следует этой структуре ниже. Однако здесь цикл for, который заполняет myDF, никогда не вызывается. С другой стороны, я не хочу помещать это в функцию, которая вызывается каждый раз, когда мне нужен myDF, воссоздая ее каждый раз. Я просто хотел бы создать myDF при запуске приложения и сохранить его как myDF, чтобы я мог его использовать.
json_file <- "file.json"
json_data <- fromJSON(json_file)
myDF <- as.data.frame(ncol = ..., nrow = ...) #creates an empty data frame myDF
for (b in field_names) {
#code that fills in myDF
}
myFunc <- function(inputs) {
#a function that uses myDF
}
shinyServer(function(input, output, session) {
output$out1 <-renderText({
myFunc(input$inputs)
})
}
1 ответ
Поместите следующее в файл с именем global.R
в каталоге вашего приложения (так же, как server.R
а также ui.R
), он будет запущен один раз при инициализации приложения.
json_file <- "file.json"
json_data <- fromJSON(json_file)
myDF <- as.data.frame(ncol = ..., nrow = ...) #creates an empty data frame myDF
for (b in field_names) {
#code that fills in myDF
}