[英]Assign to global shiny environment in package
我有一個 shiny 應用程序(作為包的一部分捆綁),在服務器 function 的開頭,我創建了一堆反應性數據幀,這些數據幀后來用於應用程序的其他部分。
由於創建了很多數據幀,我想制作一個簡單的setup_data()
function 可以在開始時調用,以幫助保持應用程序代碼整潔。 但是,由於 dfs 是在 function 中創建的,因此我需要使用<<-
或assign
來確保它們在 Shiny 的服務器環境中可用。
library(shiny)
setup_data <- function(){
reactiveDat1 <<- shiny::reactiveValues()
reactiveDat1$mydf <<- data.frame(x = 1, y = 2)
reactiveDat2 <<- shiny::reactiveValues()
reactiveDat2$mydf <<- data.frame(x = 5, y = 10)
}
ui <- fluidPage(
titlePanel(""),
sidebarLayout(
sidebarPanel(
),
mainPanel(
)
)
)
server <- function(input, output) {
setup_data()
# rest of app goes here....
}
# Run the application
shinyApp(ui = ui, server = server)
這樣做會生成一個no visible binding for '<<-' assignment
的 cran NOTE,一般來說,在 cran package 中進行全局分配是不好的做法。
因此,有沒有辦法我可以創建一個 function 進行這樣的設置,但有利於 shiny 和 cran 包? 理想情況下,我想避免返回list
中的所有內容,並且我還沒有找到一種方法可以在 Shiny Modules 框架中完成這項工作,因為沒有相應的 UI 可以將它們綁定到。
還有其他選擇嗎?
您可以使用global.R
文件設置數據。 Any R objects that are created in the global.R file become available to the app.R file, or the ui.R and server.R files respectively. 看看如何模塊化 shiny 應用程序。
編輯:正如評論中指出的,您可以使用local = TRUE
僅將對象加載到 shiny 環境中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.