[英]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和服務器功能並將其導出。 在程序包完全正常運行之前要考慮的其他一些事項:
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.