2015-12-02 22 views
1

我正在構建一個閃亮的應用程序,並且我需要重建每次應用程序打開時(由於json文件將更改)解析json文件的數據框。然後,應用程序中的功能將需要訪問此數據框。將代碼放在server.R的前面並不實際創建數據框。另一種方法是創建一個創建數據框的函數,並在每次需要數據框時調用該函數,但每次需要時都會重新創建數據框。R Shiny - 在應用程序開始時創建全局數據框

有沒有辦法一次創建數據框,並將其保存在一個變量名中,在需要時可以由應用程序其餘部分的函數訪問?

現在我的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

把下面的在應用程序的目錄名爲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 
} 
+0

太棒了!謝謝 – md1630

相關問題