logo资料库

Shiny官方教程中文版.pdf

第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
资料共43页,剩余部分请下载后查看
Shiny 官方教程中文版 2015/2/11 Shiny 学习  说明: 1. 此中文版 Shiny 教程以 RStudio 官网教程为蓝本,原版教程的链接是: http://shiny.rstudio.com/tutorial/ 2. 此翻译目的仅出于个人兴趣,并非官方的标准翻译; 3. 水平与时间皆有限,翻译教程肯定存在很多不准确之处,欢迎将指导意见与 建议发送至我的邮箱(邮箱请见下方); 4. 个人认为:Shiny 是一款很强大的 R 包,热爱 Shiny,才会进行这次翻译,希 望能够有 R 语言爱好者共同努力、共同参与,将更多优秀的 R 语言文档进行 翻译与推介; 5. 转载或使用此份中文版 Shiny 教程请注明出处。  译者: 罗晨(LUO Chen 新浪微博:@罗晨_Scorpion) 中国传媒大学 2011 级传播学(媒体市场调查与分析方向) 邮箱:luochen19941112@foxmail.com  校对者: 冷雪(LEN Xue 新浪微博:@冷雪_Sharon) 中国传媒大学 2011 级媒体创意 目 录 Shiny 学习.......................................................... 1 课程 1-欢迎来到 Shiny................................................ 3 课程 2-构建一个用户界面 ............................................. 9 课程 3-添加控制部件(widgets) ..................................... 18 课程 4-响应式输出 .................................................. 22 课程 5-使用 R 脚本与数据 ............................................ 27 教程 6-使用响应式表达式 ............................................ 34 课程 7-分享你的应用 ................................................ 39 1 of Page 43
Shiny 官方教程中文版 2015/2/11 Shiny 是一个 R 语言中的网络应用程序框架,可以将你的数据分析变成互动 性的网络应用(web apps),上手不需要具备 HTML、CSS 或 JavaScript 的相关知 识。 谁应该学习 Shiny 教程? 如果你已掌握 R 语言编程,但还不了解 Shiny,那么你会在阅读本教程后获 益匪浅。 如果你刚刚接触 R 语言,那么在学习本教程之前推荐给你的基础学习资源有 www.rstudio.com/training。如果你不确定是否准备好学习 Shiny,那么请点击 链接进行测验(http://shiny.rstudio.com/tutorial/quiz/ )。 如果你在日常工作和学习中已经使用到 Shiny,那么你可能会想要跳过本教 程,访问开发中心(Development Center)的文章(Article)部分 (http://shiny.rstudio.com/articles/ ) 。在文章部分,有涵盖各种高水平 的 Shiny 应用专题。 开始 Shiny 这 7 个课程将把你从 R 编程者带入到 Shiny 开发者的领域。每个课时大约 20 分钟,讲授一项新的 Shiny 技能。到课程结束之时,你将会知晓如何建立和部署 一个属于你自己的 Shiny 应用程序。 课程清单 课程 1-欢迎来到 Shiny 课程 2-用户界面(user interface)布局 课程 3-添加控制组件 课程 4-响应式(reactive)输出 课程 5-使用 R 脚本和数据 课程 6-使用响应式(reactive)表达式 课程 7-分享你的应用(apps) 2 of Page 43
Shiny 官方教程中文版 2015/2/11 课程 1-欢迎来到 Shiny Shiny 是一个 R 包,它让通过 R 语言建立互动性网络应用(apps)变得更加 简洁,本课程将立刻让你着手进行 Shiny 应用的构建。 如果你尚未安装 Shiny 包,请新建一个 R 任务,并连接网络,在控制台执行 以下代码: >install.packages("shiny") 本课程以 RStudio 集成开发环境为基础,请点击 http://www.rstudio.com/ide/download/preview 下载 RStudio。 示例 Shiny 包中内置了 11 个示例,详细地展现 Shiny 的基本特性。每一个示例都 是一个独立的应用程序(self-contained Shiny app)。 Hello Shiny 示例根据 R 的 faithful 数据集绘制一个直方图,并且由可变数 量的 bins 进行操控。用户可以通过滑动条更改 bins 的数量,应用会立刻对更改 动作做出响应。你可以使用 Hello Shiny 来探索一个 Shiny 应用的结构并且创造 属于你的第一个应用程序。 执行 Hello Shiny,键入: >library(Shiny) >runExample(“01_hello”) Shiny 应用的结构 Shiny 应用包含两个基本的组成部分:  一个用户界面脚本(a user-interface script)  一个服务器脚本(a server script) 用户界面(ui)脚本控制应用的布局与外表。它定义在一个称作 ui.R 的源脚 本中。在 Hello Shiny 的示例中,ui.R 的脚本如下: library(shiny) # Define UI for application that draws a histogram 3 of Page 43
Shiny 官方教程中文版 2015/2/11 shinyUI(fluidPage( #Application title titlePanel("Hello Shiny!"), #sidebar with a slide input for the number of bins slidebarLayout( slidebarPanel( slideInput("bins", "Number of bins:", min = 1, max = 50, value = 30) ), #Show a plot of the generated distribution mainPanel( plotOutput("distPlot") ) ) )) Server.R 脚本包含建构应用所需要的一些重要指示,Hello Shiny 示例的 server.R 的脚本如下: library(shiny) # Define server logic required to draw a histogram shinyServer(function(input, output) { # Expression that generates a histogram. The expression is # wrapped in a call to renderPlot to indicate that: # # 1) It is "reactive" and therefore should re-execute automatically # when inputs change # 2) Its output type is a plot output$distPlot <- renderPlot({ x <- faithful[, 2] # Old Faithful Geyser data bins <- seq(min(x), max(x), length.out = input$bins + 1) # draw the histogram with the specified number of bins hist(x, breaks = bins, col = 'darkgray', border = 'white') }) }) 在某种程度上,Hello Shiny 中的 server.R 脚本非常简单。脚本进行了一些 基础运算然后根据 bins 数量绘制直方图。 4 of Page 43
Shiny 官方教程中文版 2015/2/11 然而,你也许会注意到脚本中很大部分包裹在 renderPlot 中。以上脚本中 的注释解释了一些 renderPlot 的功能,但如果你还是存有疑惑,不必担心。我 们会在后续课程中详细介绍这一概念。 多操作 Hello Shiny 应用,然后反复浏览源代码。努力培养对应用程序工作 流程的思维感觉。 当 Hello Shiny 应用在运行的时候,你的 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 是一个相对路径。在这一情况下,文件路径与目录名称相 同。 (以免你会疑惑,Hello Shiny 应用中的文件存放在一个特殊的系统目录 "01_hello"中。这个目录可以直接通过 runExample ("01_hello")来予以调用。) 尝试 在你的工作目录下创建一个名为"App-1"的目录。然后复制粘贴 Hello Shiny 中两个脚本的代码到自己的文件目录中。当你完成这一步操作后,你的目录状态 应该如下: 5 of Page 43
Shiny 官方教程中文版 2015/2/11 通过输入"runApp("App-1")"来运行你的应用,然后点击退出并对自己的应 用作如下更改: 将标题从"Hello Shiny!"改为"Hello World!"。 将滚动条的最小值设置为 5. 将直方图颜色由"darkgray"改为"skyblue"。 当你完成后,再次运行你的应用。你的新应用显示应该如下图所示。 默认情况下,Shiny 应用采用"normal"模式显示,恰如以上应用截图所示。 Hello Shiny 和其他内置的例子的展示都采用"showcase model",这是一种不同 的展示模式。 如果你希望自己的应用也以 showcase 模式进行展示,可以执行如下命令: runApp("App-1",display.mode = "Showcase"). 重新运行应用 重新运行运用的方法有两种:  一种是执行 runApp("App-1")命令,另外一种是  在 Rstudio 编辑器中打开 ui.R 或者 server.R 脚本,Rstudio 会自动识别 Shiny 脚本并且提供一个 Run App 的按钮(在编辑器右上角)。你既可以点击 按钮进行执行操作,也可以使用键盘快捷键:Command+Shift+Enter on iOS, Control+Shift+Enter on Windows. 6 of Page 43
Shiny 官方教程中文版 2015/2/11 默认情况下,Rstudio 会在新窗口中运行应用,但是你也可以对展示窗口进 行设置,在上图 Run App 的按钮右边,可以进行选择,一共有三种展现形式。 扼要重述 创建自己的 Shiny 应用,你需要: 为自己的应用建立一个目录; 在你的目录下保存 server.R 和 ui.R 脚本; 通过 runApp 或者快捷键来运行应用; 通过点击 escape 退出 Shiny 应用。 内容拓展 你可以通过复制和更改现有的 Shiny 应用来创建自己的 Shiny 应用。Shiny Gallery(http://shiny.rstudio.com/gallery )提供很多好例子,或者可以使 用下列 11 种预建的 Shiny 示例。 system.file("examples", package="shiny") 7 of Page 43
Shiny 官方教程中文版 2015/2/11 runExample("01_hello") # a histogram runExample("02_text") # tables and data frames runExample("03_reactivity") # a reactive expression runExample("04_mpg") # global variables runExample("05_sliders") # slider bars runExample("06_tabsets") # tabbed panels runExample("07_widgets") # help text and submit buttons runExample("08_html") # Shiny app built from HTML runExample("09_upload") # file upload wizard runExample("10_download") # file download wizard runExample("11_timer") # an automated timer 8 of Page 43
分享到:
收藏