簡體   English   中英

分配給 package 中的全局 shiny 環境

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM