Shiny从入门到入定——0欢迎入坑
发表于:2023-11-09 | 分类: IT
字数统计: 2.2k | 阅读时长: 7分钟 | 阅读量:

欢迎语

Shiny是使用R代码创建Web应用程序的框架。它主要是为数据科学家设计的,为此,您可以在不了解HTML,CSS或JavaScript的情况下创建相当复杂的Shiny应用程序。另一方面,Shiny并不限制您只能创建琐碎的或预制的程序:其用户界面组件可以轻松地定制或扩展,其服务器使用反应性编程让您创建任何类型的后端逻辑。Shiny容易上手,当你深入了解它如何工作的时候,你就会更加意识到它是由强大的软件工程原理支撑的通用构建块。

如今,Shiny的应用领域和行业几乎与R本身一样多。学术界将其作为统计概念的教学工具,激发本科生对编写代码的热情,展示新颖统计方法或模型的引人注目的媒介。大型制药公司将其用于加快药物开发过程中科学家和分析师之间的协作。硅谷科技公司将其用于建立整合高级分析的实时指标仪表板。 本书旨在让您从对Shiny一无所知成为能够编写大型复杂应用程序的专业开发人员,这些应用程序易于维护且性能卓越。您将深入了解Shiny背后的反应式编程模型,以及构建有用的技术工具箱,以解决常见的应用程序挑战。

Shiny是什么?

如果你之前从未使用过Shiny,欢迎你!Shiny是一个R包,可以让你轻松地创建丰富的交互式Web应用程序。Shiny允许你将R中的工作通过Web浏览器进行展示,以便任何人都可以使用。Shiny让你轻松创建精美的Web应用程序,让你看起来很酷。

在过去,对于大多数R用户来说创建Web应用程序很困难,因为:

  • 你需要深入了解HTML、CSS和JavaScript等Web技术。

  • 要制作复杂的交互式应用程序,需要仔细分析交互流,以确保当输入变化时,只有相关的输出被更新。

Shiny通过以下方式使R程序员创建Web应用程序变得更容易:

  • 提供一组精心策划的用户界面(UI)函数,用于生成常见任务的HTML、CSS和JavaScript。这意味着,在你想超越Shiny为你提供的基本功能之前,你不需要了解HTML/CSS/JavaScript的细节。

  • 引入一种称为反应式编程的新编程风格,这种风格可以自动跟踪代码的依赖关系。这意味着每当输入发生变化时,Shiny可以自动找出如何进行最小的工作量来更新所有相关的输出。

人们使用Shiny来:

  • 创建跟踪重要高级性能指标的仪表板,同时促进对需要更多调查的指标进行深入挖掘。

  • 用交互式应用程序取代数百页的PDF文件,使用户能够跳转到他们关心的确切结果片段。

  • 使用信息丰富的可视化和交互式敏感性分析,向非技术受众传达复杂模型。

  • 为常见工作流程提供自助式数据分析,用Shiny应用程序取代电子邮件请求,允许人们上传自己的数据并执行标准分析。你可以将复杂的R分析提供给没有编程技能的用户。

  • 为教授统计学和数据科学概念创建交互式演示,允许学习者调整输入并观察分析中这些更改的下游影响。

简而言之,Shiny使您能够将您的某些R超级能力传递给任何会使用网络的人。

谁应该阅读本书?

本书主要面向以下两个受众群体:

  • 对Shiny感兴趣的R用户,以将他们的分析转化为交互式Web应用程序。要想从本书中获得最大收益,您应该能够熟练使用R进行数据分析,并且至少编写过几个函数。

  • 现有的Shiny用户,他们希望提高对Shiny理论知识的了解,以更快更容易地编写更高质量的应用程序。如果您发现自己的应用程序变得越来越庞大并且开始出现管理复杂性的问题,那么您将特别需要本书的帮助。

您将学到什么?

本书分为四个部分:

  • 在“入门”部分中,您将学习Shiny的基础知识,以便尽快上手。您将了解应用程序结构的基础知识、有用的UI组件和反应式编程的基础。

  • “Shiny实战”部分建立在基础知识之上,帮助您解决常见问题,包括向用户提供反馈、上传和下载数据、使用代码生成UI、减少代码重复和使用Shiny来编程tidyverse。

  • 在“掌握反应性”部分中,您将深入了解反应式编程的理论和实践,这是Shiny的基础编程范式。如果您是现有的Shiny用户,那么您将从本章中获得最大的价值,因为它将为您提供坚实理论基础,使您能够创建专门针对您问题的新工具。

  • 最后,“最佳实践”部分中,我们将对使您的Shiny应用程序在生产环境中运行良好的实用技术进行调查。您将学习如何将复杂的应用程序分解为函数和模块、如何使用包来组织您的代码、如何测试您的代码以确保它是正确的,以及如何衡量和改进性能。

您不会学到什么?

本书的重点是制作有效的Shiny应用程序并理解反应性的底层理论。我将尽最大努力展示数据科学、R编程和软件工程的最佳实践,但您需要其他参考资料来掌握这些重要的技能。如果您喜欢本书中的写作风格,您可能会喜欢我的其他关于这些主题的书籍:R for Data Science、Advanced R和R Packages。

还有一些特定于Shiny的重要主题,本书没有涵盖:

  • 本书只涵盖了内置的用户界面工具包。这并不能提供最吸引人的设计,但很容易学习并能让您走很长一段路。如果您有额外的需求(或者只是对默认值感到厌倦),还有许多其他包可以提供替代的前端。

  • Shiny应用程序的部署。将Shiny“投入生产”超出了本书的范围,因为这因公司而异,并且很多与R无关(大部分挑战往往是文化或组织性的,而不是技术性的)。如果您是Shiny的新手,我建议您从Joe Cheng的2019 rstudio::conf主题演讲开始:https://rstudio.com/resources/rstudioconf-2019/shiny-in-production-principles-practices-and-tools/。这将为您提供大致情况,讨论将Shiny投入生产需要什么以及如何克服您可能面临的一些挑战。完成此操作后,请参阅RStudio Connect网站以了解RStudio为您公司内部部署应用程序的产品以及Shiny 官网了解其他常见的部署场景。

先决条件

在继续之前,请确保您具备本书所需的所有软件:

R:如果您还没有安装R,那么您可能读错了书;本书假定您对R有一定的了解。如果您想学习如何使用R,我建议阅读我的《R for Data Science》一书,该书旨在让您轻松上手R。

RStudio:RStudio是一个免费且开源的R集成开发环境(IDE)。虽然您可以使用任何R环境(包括R GUI和ESS)来编写和使用Shiny应用程序,但RStudio具有一些专门用于编写、调试和部署Shiny应用程序的不错功能。我们建议您尝试一下,但这不是成功使用Shiny或本书所必需的。您可以从https://www.rstudio.com/products/rstudio/download下载RStudio Desktop。

R软件包:本书使用了很多R软件包。您可以通过运行以下代码一次性安装它们:

1
2
3
4
5
6
install.packages(c(
"gapminder", "ggforce", "gh", "globals", "openintro", "profvis",
"RSQLite", "shiny", "shinycssloaders", "shinyFeedback",
"shinythemes", "testthat", "thematic", "tidyverse", "vroom",
"waiter", "xml2", "zeallot"
))

加关注

关注公众号“生信之巅”。

生信之巅微信公众号 生信之巅小程序码

敬告:使用文中脚本请引用本文网址,请尊重本人的劳动成果,谢谢!Notice: When you use the scripts in this article, please cite the link of this webpage. Thank you!

上一篇:
Shiny从入门到入定——1.在小小的花园里面挖呀挖呀挖
下一篇:
某某动物与人类基因组的相似性高达x%?——是时候改变这种丈二和尚的说法了