如何将由多个文件组成的 Shiny 应用程序转换为易于共享和可复制的 Shiny 示例?

2023-11-22

有关于如何创建最小、完整且可验证的示例一般在 Stack Overflow 上,以及如何制作一个出色的 R 可重现示例。但目前还没有类似的指导方针shiny提出问题,同时遵守某些标准,更有可能给出高质量的答案,从而解决您的问题。

然而,提出一个好的闪亮问题可能很困难。shiny应用程序通常庞大且复杂,使用多个数据源,并且代码通常分为多个文件,因此很难与其他人共享可轻松复制的代码。即使可能会出现问题server.R,如果没有内容,则无法重现该示例ui.R(可能还有其他文件,例如样式表或global.R)。单独复制粘贴所有这些文件的内容非常麻烦,并且需要其他用户重新创建相同的文件结构才能重现问题。

所以;如何转换你的shiny应用程序变成一个很好的可重现的例子?


示例数据

当然,问题答案中提到的有关样本数据的所有指南“如何制作一个出色的 R 可重现示例”在创建与以下内容相关的问题时也保持不变Shiny。总结一下:确保运行代码不需要额外的文件。使用示例数据集,例如mtcars,或者创建一些示例数据data.frame()。如果您的数据非常复杂并且确实需要这种复杂性来说明问题,您也可以使用dput()。避免使用类似的函数read.csv(),当然,除非您有与函数相关的问题,例如fileInput.

示例代码

始终将代码减少到最低限度,以重现错误或意外行为。这包括删除对其他.CSS文件和.js文件并删除不必要的功能uiserver.

闪亮的应用程序通常由两个或三个文件组成(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)

工作示例

因此,考虑到上述所有因素,一个优秀的 Shiny 应用程序的最小、完整和可验证示例可能如下所示:

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)

添加 CSS

有多种方法可以将自定义 CSS 添加到 Shiny 应用程序,如所解释的here。在可重现示例中将 CSS 添加到 Shiny 应用程序的首选方法是在代码中添加 CSS,而不是在单独的文件中。这可以通过在ui一个应用程序,例如如下:

tags$head(tags$style(HTML('body {background-color: lightblue;}'))),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将由多个文件组成的 Shiny 应用程序转换为易于共享和可复制的 Shiny 示例? 的相关文章

随机推荐