R Shiny - 在应用程序启动时创建全局数据框

时间:2015-12-02 22:25:02

标签: json r shiny

我正在构建一个闪亮的应用程序,我需要重建一个数据框,每次应用程序打开时解析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)
  })
}

1 个答案:

答案 0 :(得分:2)

将以下内容放入应用程序目录中名为global.R的文件中(与server.Rui.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
}