有关如何在Stack Overflow上创建Minimal,Complete和Verifiable示例的资源,以及如何创建一个很好的R可重现示例.但是,对于闪亮的问题没有类似的指导原则,而遵守某些标准使得更有可能给出质量答案,从而解决您的问题.
但是,提出一个好的闪亮问题可能很困难.闪亮的应用程序通常庞大而复杂,使用多个数据源,并且代码通常分成多个文件,因此很难与其他人共享易于重现的代码.即使可能引起问题server.R,如果没有ui.R(也可能是样式表或其他文件global.R)的内容,该示例是不可再现的.单独复制粘贴所有这些文件的内容是麻烦的,并且需要其他用户重新创建相同的文件结构以能够重现该问题.
所以; 如何将您的闪亮应用程序转换为一个良好的可重现的示例?
Flo*_*ian 27
示例数据
当然,在创建与之相关的问题时,关于"如何制作一个很好的R可重复示例"的答案中提到的关于样本数据的所有指南也都适用Shiny.总结:确保运行代码不需要其他文件.使用样本数据集mtcars,或使用创建一些样本数据data.frame().如果您的数据非常复杂并且确实需要复杂性来说明问题,那么您也可以使用dput().避免使用类似的功能read.csv(),除非你有与像这样的功能有关的问题fileInput.
示例代码
始终将代码减少到最低限度,以重现您的错误或意外行为.这包括去除额外的呼叫.CSS的文件和.js文件,并除去在不必要的功能ui和server.
闪亮的应用程序往往由两个或三个文件(ui.R,server.R以及可能的global.R),比如这个演示应用程序.但是,最好将您的代码作为单个脚本发布,因此可以轻松地由其他人运行,而无需手动创建这些文件.这可以通过以下方式轻松完成:
ui <- fluidPage(…),server <- function(input,output, session) {…},shinyApp(ui, server).所以一个简单的骨架可以看起来如下:
library(shiny)
ui <- fluidPage(
)
server <- function(input,output,session) {
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
工作实例
因此,考虑到上述所有因素,Shiny应用程序的一个良好的Minimal,Complete和Verifiable示例可能如下所示:
library(shiny)
df <- data.frame(id = letters[1:10], value = seq(1,10))
ui <- fluidPage(
sliderInput('nrow', 'Number of rows', min = 1, max = 10, value = 5),
dataTableOutput('my_table')
)
server <- function(input, output, session) {
output$my_table <- renderDataTable({
df[1:input$nrow,]
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
添加CSS
有多种方法可以自定义CSS添加到闪亮的应用程序,如解释在这里.在可重现的示例中将CSS添加到Shiny应用程序的首选方法是在代码中添加CSS,而不是在单独的文件中.这可以通过在ui应用程序中添加一行来完成,例如,如下所示:
tags$head(tags$style(HTML('body {background-color: lightblue;}'))),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1585 次 |
| 最近记录: |