組織更大的Shiny應用程序的最佳實踐是什麼?
我認爲最好的R實踐也適用於Shiny。
最佳R實踐這裏討論:How to organize large R programs
鏈接到谷歌的[R風格指南:Style Guide如何組織大型閃亮應用程序?
但什麼是我可以採取使我的閃亮代碼閃亮背景下獨特的技巧和竅門更好看(更可讀)? 我想到的東西,如:
- 在閃亮
- 在
server.R
開拓面向對象的編程這部分應採購? - 含降價文檔,圖片, XML文件和源文件
例如項目的文件層次如果我使用的每一個tabPanel
我的代碼navbarPage
和tabsetPanel
開始另外幾個UI元素後顯得相當凌亂。
示例代碼:
server <- function(input, output) {
#Here functions and outputs..
}
ui <- shinyUI(navbarPage("My Application",
tabPanel("Component 1",
sidebarLayout(
sidebarPanel(
# UI elements..
),
mainPanel(
tabsetPanel(
tabPanel("Plot", plotOutput("plot")
# More UI elements..
),
tabPanel("Summary", verbatimTextOutput("summary")
# And some more...
),
tabPanel("Table", tableOutput("table")
# And...
)
)
)
)
),
tabPanel("Component 2"),
tabPanel("Component 3")
))
shinyApp(ui = ui, server = server)
組織ui.R
代碼,我發現相當不錯的解決方案從GitHub:radiant code
解決方案是使用renderUI
渲染每一個tabPanel
和server.R
選項卡外包給不同的文件。
server <- function(input, output) {
# This part can be in different source file for example component1.R
###################################
output$component1 <- renderUI({
sidebarLayout(
sidebarPanel(
),
mainPanel(
tabsetPanel(
tabPanel("Plot", plotOutput("plot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", tableOutput("table"))
)
)
)
})
#####################################
}
ui <- shinyUI(navbarPage("My Application",
tabPanel("Component 1", uiOutput("component1")),
tabPanel("Component 2"),
tabPanel("Component 3")
))
shinyApp(ui = ui, server = server)
感謝您的建議@Pork Chop - 是否有一個很好的理由,爲什麼馬特將io和反應物放在* appSourceFiles *子目錄中,而不是將它留在外部目錄中? – micstr 2016-06-30 10:05:23
@micstr,我想他會採用他過去做的大型項目的結構。我會建議看一下開發和構造應用程序的Visual Studio項目設置(僅用於洞察)。你也可以在你的Rshiny中採用[MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)模型結構並按文件夾分解它 – 2016-06-30 11:20:22