我正在构建一个闪亮的应用程序,我需要重建一个数据框,每次应用程序打开时解析json文件(因为json文件将更改)。然后,应用程序中的功能将需要访问此数据框。将代码放在server.R前面实际上并不创建数据框。另一种方法是创建一个创建数据帧的函数,并在每次需要数据帧时调用该函数,但每次需要时都会重新创建数据帧。
有没有办法创建数据框一次,并将其保存在变量名中,需要时可以通过应用程序其余部分的函数访问?
现在我在server.R中的代码遵循以下结构。但是,这里填充myDF的for循环从不被调用。另一方面,我不想把它放在每次需要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)
})
}
答案 0 :(得分:2)
将以下内容放入应用程序目录中名为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
}