簡體   English   中英

閃亮的應用程序與模塊作為一個包

[英]shiny app with module as a package

我正在嘗試創建一個由模塊組織的閃亮應用程序包。 我找不到任何幫助,我能找到的每個例子都不使用模塊。 有人可以舉個例子嗎?

您必須確保ui部件以及模塊的server部分在包中導出

#' @export
myModuleUI <- function(id){
  ns = NS(id)
  plotOutput(ns("plot"))
}

#' @export
myModuleServer <- function(input, output, session){
  output$plot <- renderPlot({hist(rnorm(100))})
}

從加載包裝的腳本中,您可以使用

library(myPackage)

shinyApp(
  fluidPage(myModuleUI("someId")),
  function(input,output,session){
    callModule(myModuleServer, "someId")
  }
)

在記錄模塊時,沒有標准的方法可以做到這一點。 大多數軟件包使用類似於函數的最小文檔以及示例應用程序 - 請參閱Joris Meys的答案。

Gregor de Cillia為您提供了一個很好的例子,說明如何構建UI和服務器功能並將其導出。 在程序包完全正常運行之前要考慮的其他一些事項:

  • 正如Gregor所說,導出這些功能將使它們可供最終用戶使用。
  • 確保將shiny包添加到描述文件中的Depends列表中(另請參閱R手冊中的Package Dependencies )。 與導入shiny包相比,將它添加到依賴列表更有意義,因為所有閃亮的功能也應該對最終用戶可用,而不僅僅是您的模塊功能。 現在的標准是使用import而不是依賴,但在這種情況下,Depends更有意義。

為了使您的包裝一流,添加一個說明您的模塊的小例子。 以Gregor為例,然后將一個文件夾inst/examples/moduleExample/到您的包中,並在那里有一個文件app.R ,如下所示:

shinyApp(
  fluidPage(myModuleUI("someId")),
  function(input,output,session){
    callModule(myModuleServer, "someId")
  }
)

現在添加一個說明模塊使用的moduleDemo函數。

#' @export
moduleDemo <- function(){
  loc <- system.file("examples","moduleExample",
                     package = "myPackage")
  shinyAppDir(loc)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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