在Stack Overflow和how to make a great R reproducible example上有一些关于如何创建Minimal, Complete, and Verifiable example的资源。但是,对于shiny问题没有类似的指导方针,而遵守某些标准则更有可能给出高质量的答案,从而解决您的问题。
然而,问一个好的Shiny问题可能很困难。shiny应用通常又大又复杂,使用多个数据源,代码通常被分割到多个文件中,这使得很难与他人共享可轻松复制的代码。即使server.R
可能会导致问题,没有ui.R
的内容,该示例不可再现(以及可能的其它文件,如样式表或global.R
)。单独地复制粘贴所有这些文件的内容是麻烦的,并且要求其他用户重新创建相同的文件结构以便能够再现该问题。
那么,如何将您的shiny应用程序转换为一个可重复的示例呢?
1条答案
按热度按时间dojqjjoe1#
示例数据
当然,在创建与
Shiny
相关的问题时,在问题“how to make a great R reproducible example”的答案中提到的关于样本数据的所有准则也适用。确保运行代码时不需要其他文件。使用mtcars
之类的示例数据集,或者使用data.frame()
创建一些示例数据。如果数据非常复杂,并且确实需要这种复杂性来说明问题,则也可以使用dput()
。避免使用read.csv()
之类的函数,除非您对fileInput
之类的函数有疑问。示例代码
始终将代码减少到最低限度,以重现错误或意外行为。这包括删除对其他
.CSS
文件和.js
文件的调用,以及删除ui
和server
中不必要的函数。优秀的应用程序通常由两个或三个文件组成(
ui.R
,server.R
,可能还有global.R
),例如this demo application。然而,最好将代码作为一个脚本发布,这样其他人就可以轻松地运行它,而不必手动创建这些文件。ui <- fluidPage(…)
Package 你的UI,server <- function(input,output, session) {…}
的服务器,shinyApp(ui, server)
。因此,一个简单的 backbone 可以像下面这样开始:
工作示例
因此,考虑到以上所有因素,一个良好的Minimal、Complete和Verifiable应用程序示例应该如下所示:
添加CSS
如here所述,有多种方法可以将自定义CSS添加到Shiny应用程序中。在一个可重现的示例中,将CSS添加到Shiny应用程序中的首选方法是将CSS添加到代码中,而不是单独的文件中。这可以通过在应用程序的
ui
中添加一行来完成,例如: