热线电话:13121318867

登录
2018-10-25 阅读量: 862
R里的shiny包学习--shiny入门

Shiny是RStudio公司开发的新包,有了它,可以用R语言轻松开发交互式web应用。

  • 只用几行代码就可以构建有用的web应用程序—不需要用JavaScript。
  • Shiny应用程序会自动刷新计算结果,这与电子表格实时计算的效果类似。 当用户修改输入时,输出值自动更新,而不需要在浏览器中手动刷新。
  • Shiny用户界面可以用纯R语言构建,如果想更灵活,可以直接用HTML、CSS和JavaScript来写。
  • 可以在任何R环境中运行(R命令行、Windows或Mac中的Rgui、ESS、StatET、RStudio等)
  • 基于Twitter Bootstrap的默认UI主题很吸引人。
  • 高度定制化的滑动条小工具(slider widget),内置了对动画的支持。
  • 预先构建有输出小工具,用来展示图形、表格以及打印输出R对象。
  • 采用websockets包,做到浏览器和R之间快速双向通信。
  • 采用反应式(reactive)编程模型,摒弃了繁杂的 事件处理代码,这样你可以集中精力于真正关心的代码上。
  • 开发和发布你自己的Shiny小工具,其他开发者也可以非常容易地将它加到自己的应用中(即将面市!)

Shiny可以从CRAN获取, 所以你可以用通常的方式来安装,在R的命令行里输入:

r install.packages("shiny")

Hello Shiny是个简单的应用程序, 这个程序可以生成正态分布的随机数,随机数个数可以由用户定义,并且绘制这些随机数的直方图. 要运行这个例子,只需键入:

library(shiny) runExample("01_hello") 

Shiny应用程序分为两个部分:用户界面定义和服务端脚本。这两部分的源代码将在下面列出。

在教程的后续章节,我们将解释代码的细节并讲解如何用“反应性”表达式来生成输出。现在,就尝试运行一下例子程序,浏览一下源代码,以获得对shiny的初始印象。也请认真阅读注释。

用户界面是在源文件ui.R中定义的:

library(shiny) # Define UI for application that plots random distributions  shinyUI(pageWithSidebar( # Application title headerPanel("Hello Shiny!"), # Sidebar with a slider input for number of observations sidebarPanel( sliderInput("obs", "Number of observations:", min = 0, max = 1000, value = 500) ), # Show a plot of the generated distribution mainPanel( plotOutput("distPlot") ) )) 

下面列出了服务端的代码。从某种程度上说,它很简单——生成给定个数的随机变量, 然后将直方图画出来。不过,你也注意到了,返回图形的函数被 renderPlot包裹着。

library(shiny) # Define server logic required to generate and plot a random distribution shinyServer(function(input, output) { # Expression that generates a plot of the distribution. The expression # is wrapped in a call to renderPlot to indicate that: # #  1) It is "reactive" and therefore should be automatically  #     re-executed when inputs change #  2) Its output type is a plot  # output$distPlot <- renderPlot({ # generate an rnorm distribution and plot it dist <- rnorm(input$obs) hist(dist) }) })
169.9183
0
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子