Shiny官方教程中文版2015/2/111ofPage43Shiny学习说明:1.此中文版Shiny教程以RStudio官网教程为蓝本,原版教程的链接是:此翻译目的仅出于个人兴趣,并非官方的标准翻译;3.水平与时间皆有限,翻译教程肯定存在很多不准确之处,欢迎将指导意见与建议发送至我的邮箱(邮箱请见下方);4.个人认为:Shiny是一款很强大的R包,热爱Shiny,才会进行这次翻译,希望能够有R语言爱好者共同努力、共同参与,将更多优秀的R语言文档进行翻译与推介;5.转载或使用此份中文版Shiny教程请注明出处。译者:罗晨(LUOChen新浪微博:@罗晨_Scorpion)中国传媒大学2011级传播学(媒体市场调查与分析方向)邮箱:luochen19941112@foxmail.com校对者:冷雪(LENXue新浪微博:@冷雪_Sharon)中国传媒大学2011级媒体创意目录Shiny学习..........................................................1课程1-欢迎来到Shiny................................................3课程2-构建一个用户界面.............................................9课程3-添加控制部件(widgets).....................................18课程4-响应式输出..................................................22课程5-使用R脚本与数据............................................27教程6-使用响应式表达式............................................34课程7-分享你的应用................................................39Shiny官方教程中文版2015/2/112ofPage43Shiny是一个R语言中的网络应用程序框架,可以将你的数据分析变成互动性的网络应用(webapps),上手不需要具备HTML、CSS或JavaScript的相关知识。谁应该学习Shiny教程?如果你已掌握R语言编程,但还不了解Shiny,那么你会在阅读本教程后获益匪浅。如果你刚刚接触R语言,那么在学习本教程之前推荐给你的基础学习资源有。如果你不确定是否准备好学习Shiny,那么请点击链接进行测验()。如果你在日常工作和学习中已经使用到Shiny,那么你可能会想要跳过本教程,访问开发中心(DevelopmentCenter)的文章(Article)部分()。在文章部分,有涵盖各种高水平的Shiny应用专题。开始Shiny这7个课程将把你从R编程者带入到Shiny开发者的领域。每个课时大约20分钟,讲授一项新的Shiny技能。到课程结束之时,你将会知晓如何建立和部署一个属于你自己的Shiny应用程序。课程清单课程1-欢迎来到Shiny课程2-用户界面(userinterface)布局课程3-添加控制组件课程4-响应式(reactive)输出课程5-使用R脚本和数据课程6-使用响应式(reactive)表达式课程7-分享你的应用(apps)Shiny官方教程中文版2015/2/113ofPage43课程1-欢迎来到ShinyShiny是一个R包,它让通过R语言建立互动性网络应用(apps)变得更加简洁,本课程将立刻让你着手进行Shiny应用的构建。如果你尚未安装Shiny包,请新建一个R任务,并连接网络,在控制台执行以下代码:install.packages(shiny)本课程以RStudio集成开发环境为基础,请点击下载RStudio。示例Shiny包中内置了11个示例,详细地展现Shiny的基本特性。每一个示例都是一个独立的应用程序(self-containedShinyapp)。HelloShiny示例根据R的faithful数据集绘制一个直方图,并且由可变数量的bins进行操控。用户可以通过滑动条更改bins的数量,应用会立刻对更改动作做出响应。你可以使用HelloShiny来探索一个Shiny应用的结构并且创造属于你的第一个应用程序。执行HelloShiny,键入:library(Shiny)runExample(“01_hello”)Shiny应用的结构Shiny应用包含两个基本的组成部分:一个用户界面脚本(auser-interfacescript)一个服务器脚本(aserverscript)用户界面(ui)脚本控制应用的布局与外表。它定义在一个称作ui.R的源脚本中。在HelloShiny的示例中,ui.R的脚本如下:library(shiny)#DefineUIforapplicationthatdrawsahistogramShiny官方教程中文版2015/2/114ofPage43shinyUI(fluidPage(#ApplicationtitletitlePanel(HelloShiny!),#sidebarwithaslideinputforthenumberofbinsslidebarLayout(slidebarPanel(slideInput(bins,Numberofbins:,min=1,max=50,value=30)),#ShowaplotofthegenerateddistributionmainPanel(plotOutput(distPlot)))))Server.R脚本包含建构应用所需要的一些重要指示,HelloShiny示例的server.R的脚本如下:library(shiny)#DefineserverlogicrequiredtodrawahistogramshinyServer(function(input,output){#Expressionthatgeneratesahistogram.Theexpressionis#wrappedinacalltorenderPlottoindicatethat:##1)Itisreactiveandthereforeshouldre-executeautomatically#wheninputschange#2)Itsoutputtypeisaplotoutput$distPlot-renderPlot({x-faithful[,2]#OldFaithfulGeyserdatabins-seq(min(x),max(x),length.out=input$bins+1)#drawthehistogramwiththespecifiednumberofbinshist(x,breaks=bins,col='darkgray',border='white')})})在某种程度上,HelloShiny中的server.R脚本非常简单。脚本进行了一些基础运算然后根据bins数量绘制直方图。Shiny官方教程中文版2015/2/115ofPage43然而,你也许会注意到脚本中很大部分包裹在renderPlot中。以上脚本中的注释解释了一些renderPlot的功能,但如果你还是存有疑惑,不必担心。我们会在后续课程中详细介绍这一概念。多操作HelloShiny应用,然后反复浏览源代码。努力培养对应用程序工作流程的思维感觉。当HelloShiny应用在运行的时候,你的R处于繁忙状态,因此你不能执行别的R命令。若是希望恢复自己的R,点击退出或者单击停止符号(停止符号在Rstudio控制面板的右上角)。运行一个应用每一个Shiny应用都拥有相同的结构:存放在一个目录中的两个R脚本。最低要求是:一个Shiny应用有一个ui.R文件和一个server.R文件。你可以在一个目录中保存一个ui.R文件和server.R文件来创建一个Shiny应用。每一个应用都需要自己独特的存放目录。运行应用的方法是在函数runApp中置入目录名称。例如你的应用存放的目录名称为my_app,那么键入以下代码可以执行应用:library(shiny)runApp(my_app)注意:runApp与read.csv、read.table以及R中其他的一些命令类似。runApp中的第一个参数是从你的工作目录到应用存放目录的一个文件路径。以上的代码假设my_app是一个相对路径。在这一情况下,文件路径与目录名称相同。(以免你会疑惑,HelloShiny应用中的文件存放在一个特殊的系统目录01_hello中。这个目录可以直接通过runExample(01_hello)来予以调用。)尝试在你的工作目录下创建一个名为App-1的目录。然后复制粘贴HelloShiny中两个脚本的代码到自己的文件目录中。当你完成这一步操作后,你的目录状态应该如下:Shiny官方教程中文版2015/2/116ofPage43通过输入runApp(App-1)来运行你的应用,然后点击退出并对自己的应用作如下更改:将标题从HelloShiny!改为HelloWorld!。将滚动条的最小值设置为5.将直方图颜色由darkgray改为skyblue。当你完成后,再次运行你的应用。你的新应用显示应该如下图所示。默认情况下,Shiny应用采用normal模式显示,恰如以上应用截图所示。HelloShiny和其他内置的例子的展示都采用showcasemodel,这是一种不同的展示模式。如果你希望自己的应用也以showcase模式进行展示,可以执行如下命令:runApp(App-1,display.mode=Showcase).重新运行应用重新运行运用的方法有两种:一种是执行runApp(App-1)命令,另外一种是在Rstudio编辑器中打开ui.R或者server.R脚本,Rstudio会自动识别Shiny脚本并且提供一个RunApp的按钮(在编辑器右上角)。你既可以点击按钮进行执行操作,也可以使用键盘快捷键:Command+Shift+EnteroniOS,Control+Shift+EnteronWindows.Shiny官方教程中文版2015/2/117ofPage43默认情况下,Rstudio会在新窗口中运行应用,但是你也可以对展示窗口进行设置,在上图RunApp的按钮右边,可以进行选择,一共有三种展现形式。扼要重述创建自己的Shiny应用,你需要:为自己的应用建立一个目录;在你的目录下保存server.R和ui.R脚本;通过runApp或者快捷键来运行应用;通过点击escape退出Shiny应用。内容拓展你可以通过复制和更改现有的Shiny应用来创建自己的Shiny应用。ShinyGallery()提供很多好例子,或者可以使用下列11种预建的Shiny示例。system.file(examples,package=shiny)Shiny官方教程中文版2015/2/118ofPage43runExample(01_hello)#ahistogramrunExample(02_text)#tablesanddataframesrunExample(03_reactivity)#areactiveexpressionrunExample(04_mpg)#globalvariablesrunE