专栏首页优雅R「R」Shiny:工作流(一)开发工作流

「R」Shiny:工作流(一)开发工作流

工作流系列将向读者介绍如何提升 3 个重要的 Shiny 工作流:

  • 创建应用,进行更改并尝试结果的基本开发周期。
  • 调试,找出代码出了什么问题的技巧,并集思广益地解决该问题。
  • 编写 reprexes,这些独立的代码段说明了问题。Reprexes是一种强大的调试技术,如果你想从别人那里获得帮助,它们是必不可少的。

首先我们将学习开发工作流。

优化开发工作流程的目标是减少做出更改和看到结果之间的时间。迭代的速度越快,你可以进行的实验就越快,你就可以成为一名更好的 Shiny 开发人员。这里有两个主要的工作流程需要优化:第一次创建应用程序,以及加快代码调整和试验结果的迭代周期。

创建 Shiny 应用

我们基本上使用相同的六行 R 代码启动每个应用程序:

library(shiny)
ui <- fluidPage(
)
server <- function(input, output, session) {
}
shinyApp(ui, server)

你可能很快就厌倦了键入该代码,因此 RStudio 提供了一些快捷方式:

  • 如果你已经打开了要使用的 app.R,请键入 shinyapp,然后按 Shift + Tab 插入 Shiny 应用程序片段。
  • 如果要启动新项目,请转到“文件”菜单,选择“新建项目”,然后选择“Shiny 的 Web 应用程序”:

读者可能认为学习这些快捷方式不值得,因为你每天只会创建一两个应用程序,但是创建简单的应用程序是在开始较大项目之前检查基本概念的好方法,它们是调试的绝佳工具。

查看你的更改

可能你每天只创建几个应用程序,但你将运行数百次应用程序,因此掌握开发工作流程尤为重要。降低迭代速度的第一种方法是避免单击“运行应用程序”按钮,而是学习键盘快捷键Cmd/Ctrl + Shift + Enter。这为你提供了以下开发工作流程:

  1. 编写一些代码。
  2. 使用快捷键启动应用程序。
  3. 交互式地测试应用。
  4. 关闭应用。
  5. 回到第 1 步。

进一步降低迭代速度的另一种方法是打开自动重新加载(options(shiny.autoreload = TRUE)),然后在后台作业中运行该应用,使用此工作流程,保存文件后,您的应用将重新启动:无需关闭并重新启动。这将导致更快的工作流程:

  1. 编写代码并运行保存快捷键保存文件。
  2. 交互式地测试应用。
  3. 回到第 1 步。

具体使用方法见 https://github.com/sol-eng/background-jobs/tree/master/shiny-job。

这种技术的主要缺点是,由于应用程序是在单独的进程中运行的,因此调试起来相当困难。

随着你的应用程序变得越来越大,你会发现“交互式实验”步骤开始变得繁重。很难记住要重新检查应用程序中可能受更改影响的每个组件。在后面的文章中,我们将学习自动测试的工具,该工具可让我们将正在运行的交互式实验转换为自动代码。这使我们可以更快地运行测试(因为它们是自动化的),这意味着我们不能忘记运行重要的测试。开发测试需要一些初期投资,但是对于大型应用程序来说,这些投入是值得的。

控制视图

默认情况下,运行该应用程序时,它将显示在弹出窗口中。我们可以从“运行应用程序”下拉菜单中选择其他两个选项:

  • 在查看器窗格中运行对于较小的应用程序很有用,因为你可以在运行应用程序代码的同时看到它。
  • 在外部浏览器中运行对于大型应用程序很有用,或者如果你要检查应用程序的外观是否与大多数用户看到的情况完全相同。

本文分享自微信公众号 - 优雅R(elegant-r),作者:王诗翔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「R」数据可视化18:弧形图

    图片来源:https://www.data-to-viz.com/graph/arc.html

    王诗翔呀
  • 「R」R 的基本图形绘制

    接下来示例中,我们绘制一项探索类风湿性关节炎新疗法研究的结果。数据已经包含在随vcd包分发的Arthritis数据框中。(请确保在使用前已经安装vcd包,使用命...

    王诗翔呀
  • 「R」R传统图形绘制多图

    mfrow 和 mfcol 都由 2 个数字指定,一个表示行数、一个表示列数。如果使用 mfrow,那么图像区域会被按行依次使用;如果使用 mfcol,那么图像...

    王诗翔呀
  • 将应用程序移动到云计算的5个步骤

    组织对于关键业务应用程序的迁移,需要进行充分的前期准备,并保持其在整个过程中所需要的控制。 ? 业务应用程序以创纪录的数量进入云端,使用户和IT团队进入了访问...

    静一
  • 虚假应用潜入TOP100:论恶意软件如何逃过检测

    Google play和ios应用商店对试图诱骗用户下载广告或恶意软件的应用有很严密的检测。最近,我们还发现了隐藏在应用商店合法产品中的恶意应用程序。这些应用诱...

    FB客服
  • 在苹果应用商店的17个应用程序中发现iOS Clicker Trojan

    Wandera Threat Labs研究人员发现有十多个iOS应用程序感染了Clicker Trojan(点击木马)恶意代码并在苹果的应用商店传播。其使用和安...

    FB客服
  • 企业选择Html5做移动开发要慎之又慎

    从Html5问世的那天起,Html5的神奇功能就被无限放大,曾有分析师认为:Html5将开启移动互联网的无界之争,可是FaceBook抛弃Html5时,人们才幡...

    人称T客
  • 移动应用开发的五个致命的神话

    虽然手机应用程序开发不再是新的,仍然有许多误解应用发展。一些信仰只不过是被误导的,别人是错了。 当企业和企业家把时间和金钱浪费在没有人使用的应用程序,通常因为他...

    用户1289394
  • 「应用架构」应用程序架构的当前趋势

    本文有些不是最最新的,但是方法和思路也有借鉴意义,稍后会介绍Gantner的最新应用架构趋势。

    首席架构师智库
  • 云应用程序很慢?原因在应用,而不是云

    上午7点,你早早地赶到办公室,希望在没有他人访问公司公有云的时候,库存应用程序能做好更改的准备。然而,即使早上这段时间只有少量的用户在线,应用的性能仍然乏善可陈...

    静一

扫码关注云+社区

领取腾讯云代金券