Присвоить глобальной блестящей среде в упаковке - PullRequest
1 голос
/ 10 апреля 2020

У меня есть блестящее приложение (связанное как часть пакета), в котором в начале серверной функции я создаю кучу реактивных фреймов данных, которые позже используются в других частях приложения.

Поскольку было создано довольно много фреймов данных, я хотел создать простую функцию setup_data(), которую можно было бы вызывать в начале, чтобы обеспечить чистоту кода приложения. Однако, поскольку dfs создаются внутри функции, мне нужно использовать либо <<-, либо 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, и в общем случае делать глобальные присвоения в пакете крана - это плохая практика.

Поэтому есть способ, которым я могу создать функцию, которая выполняет настройку, подобную этой, но в некотором роде способствуют блестящие и краны пакетов? В идеале я бы хотел не возвращать все в list, и я не нашел способа сделать эту работу в платформе Shiny Modules, так как нет соответствующего пользовательского интерфейса для t ie этим.

Есть ли другие варианты?

1 Ответ

0 голосов
/ 10 апреля 2020

Вы можете настроить данные, используя файл global.R. Любые объекты R, созданные в файле global.R, становятся доступными для файла app.R или файлов ui.R и server.R соответственно. Посмотрите, как модульные блестящие приложения.

РЕДАКТИРОВАТЬ: Как указано в комментариях, вы можете использовать local = TRUE только для загрузки объектов в блестящую среду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...