如何提高R降价与运行时的交互性

据美国媒体|2019年5月10日

在这一集中,Sharon演示了如何使用runtime shink来增强R降价交互

版权所有©2019足球竞彩网下载

你好。我是IDG通信公司的Sharon Machlis,这里是domorewithr:turbuster R Markdown与runtime shink的交互。
R Markdown是现代R中我最喜欢的东西之一,它提供了一种简单的方法,可以将文本、R代码和R代码的结果组合在一个文档中。当文档是HTML时,您可以添加一些用户与包的交互,如DT用于可搜索表或传单用于可缩放地图。
但是如果你想增强doc的交互潜力,可以考虑添加“runtime shiny”
Shiny是一个R的Web应用程序框架,具有相当特定的格式。它需要用户界面和服务器逻辑的特殊部分,以及放置显示的每个项的额外代码。闪亮的应用程序布局的语法对于第一次使用的人来说可能会让人望而生畏。
你可能不知道的是:你可以把一个R标记文件变成一个迷你闪亮的应用程序,而不需要很多僵硬的结构。这是一个轻松学习框架的好方法。您可以直接跳入并尝试用户输入和结果,而不必担心典型的新手问题,如嵌套括号和所有逗号的位置。而且,即使您对shinny有更丰富的经验,但如果不需要全面的应用程序,shinny文档有时也是有意义的。我发现在担心布局之前测试功能是一种有用的方法。
我们开始吧。
这是一个传统的R标记文档,其中有一个表,显示了马萨诸塞州邮政编码的一些人口统计数据。
该表是可搜索的,因此用户可以按邮政编码、城市和其他列进行搜索;还可以按列进行排序。我可以查看米德尔塞克斯郡的所有邮政编码,然后对家庭收入中位数最高的邮政编码,或每月房价最高的邮政编码进行排序,等等。不过,虽然我可以对表进行排序,但其他项不会更改。相同的直方图,相同的文本。
如果能有更多的互动信息那就太好了。我希望用户能够选择个别城市,并看到页面上的一切变化。
这就是运行时闪亮的地方。
我将打开同一个文档的副本,并将runtime:shinny添加到YAML中。当我这样做的时候,注意编织图标。你看到它从“编织”变为“运行文档”了吗?这是一个迷你闪亮的应用程序。我还将添加光泽的包裹,我正在加载。
我得到了同一个文档的另一个副本,其中有一行代码添加了一个下拉列表,以便用户可以选择一个或多个城市。selectInput()是创建下拉列表的函数。让我检查一下selectInput()的参数
第一个“mycities”是变量名,它将存储用户选择的任何内容。第二个参数是将与下拉列表一起显示的文本。第三个参数choices列出了下拉列表中所有可能的值。在本例中,我取数据集中所有唯一的城市名,然后按字母顺序对它们进行排序。Multiple等于true允许用户选择多个城市。最后,selected=Boston默认波士顿为所选城市。到目前为止相当直截了当。
接下来发生的事情有几个要点。Mycities不再是一个“常规”R变量。它是动态的,基于用户输入。这意味着你不能再把它称为“我的城市”。相反,现在是输入$mycities。
一。任何使用动态输入的都是动态的。这意味着它也不能被当作一个正则的R变量。如果你还记得的话,当你和shiny一起工作时,你会省去很多头痛。
2。值(比如数据帧)需要是“反应性的”,这和将它包装在一个特殊函数中一样简单,但你需要记住要这样做。
三。任何显示动态内容(表、地图、直方图,甚至文本)的内容都需要使用shiny的一个特殊渲染函数以特殊的方式进行渲染。好消息是shining负责监视更改和计算结果的大部分功能。我们只需要记住使用特殊功能。
让我告诉你我的意思。
我想创建一个名为mydata的数据框架,用于筛选用户选择的城市之一所在的任何行。但是,普通的dplyr filter命令不起作用。
你看到错误信息了吗?找不到mycities,因为它不是常规的R变量。闪亮的工作方式,我需要把它称为输入$mycities。
我会把我的城市改成$mycities。但我还是会出错的。
你可能会看到这个错误很多,当你开始闪亮。这意味着你试图用常规的R方式来创建动态的东西,相反,你需要让它变得被动。
幸运的是,在这种情况下,它和使用反应函数一样简单。
mydata对象现在持有一个反应式表达式。 现在你可以看到我们有一个下拉列表,但它还不能做任何事情。让我们添加一个数据表。
这段代码也不起作用,原因有二。首先,mydata是一个反应式表达式,而不是一个典型的变量。所以我不能仅仅使用我的数据来访问它的值。我需要把它当作一个正则函数来引用:后面加上括号。 这个错误消息有点晦涩,但它说的是mydata不是一个数据帧或矩阵。事实上,这是一个反应式的表达。所以让我们通过添加括号来解决这个问题
啊,这里有一个我们已经很熟悉的错误消息:我试图用“常规R方式”显示动态的东西,但这不起作用。
为了解决这个问题,我需要一个shinny的渲染函数。很多可视化软件包都有自己独特的闪亮渲染功能,DT就是其中之一。包装函数是renderDT。我将添加此内容并再次运行文档。它起作用了!
我可以使用相同的mydata反应值来创建直方图。
甚至还有地图。
这是一个很大的接受。如果你是新手,你需要一些实践-像任何编码技能-才有意义。但如果你总是记得,任何动态的东西——价值观或显示——都需要特殊对待,那就是向前迈出的一大步。
有关本期节目中使用的代码的更多详细信息,如果您将此作为独立视频观看,请查看屏幕上URL处附带的InfoWorld文章。
关于R标记闪亮文档的最后一点。一旦你添加了runtime shiny,它就不再是一个HTML文件了——它是一个迷你应用程序。这意味着它需要一个闪亮的服务器来运行。
任何拥有R、RStudio和shiny包的人在他们的本地系统上都有一个shiny服务器,所以很容易与其他R用户共享这些服务器。你可以给他们寄一份文件。或者可以将其作为zip或tar文件在线发布,并使用shingrunurl命令。
GitHub上的文档有特殊的runGitHub和runGist函数。
但在某些情况下,你可能会想把你的作品展示给非R用户。这就需要一个闪亮的服务器。
一个选择是RStudio的希尼亚普斯.io服务。对于一些有限的公共应用程序是免费的,但任何严重的事情都需要付费帐户。
您还可以在AWS或Google计算引擎等云服务上构建自己的闪亮服务器。你只需要RStudio闪亮的服务器软件的免费开源版本。在数字海洋云服务上做这件事有一个很好的循序渐进的教程,在那里你可以建立和运行一个小的闪亮的服务器,只要5美元/月。
这一集到此为止,谢谢收看!有关更多R提示,请转到go dot infoworld.com上的Do more With R页面slash more With R,除R外均为小写。您还可以在YouTube IDG Tech Talk频道上找到Do more With R播放列表。
希望下集能见到你!

流行的
来自的精选视频IDG.tv公司