R语言用Shiny包快速搭建交互网页应用

Shiny包的特点在于不需要了解网页语言,可以用纯R来搭建。生成的网页应用是动态交互,而且是即时更新的。Shiny还提供了现成组件方便快速在网页上展示数据、图表和模型,的确是非常的炫。

通过交互网页应用,可以

1) 不需要安装任何程序, 携带数据, 只要有网的地方, 你就能演示。(远程)

2) 只要安装一次, 可以多人使用, 可以让别人试用。(多用户)

3) 不用担心软件或者代码泄密, 可以控制用户使用时间和权限。 (服务)

4) 通过交互式操作,在数据分析中减少重复的工作如调整参数等。(交互)

应用组成

Shiny应用包含连个基本的组成部分:一个是用户界面脚本(a user-interface ),另一个是服务器脚本(a server )。

Shiny还有很多有用的控件,如下图所示:

代码基本框架

可运行代码

首先安装Shiny包:

options(repos = c(RStudio = 'http://rstudio.org/_packages', getOption('repos')))
install.packages('shiny')
install.packages('digest')
install.packages('htmltools')
install.packages('httpuv')

再写两个R代码文件:一个是负责前端的ui.R,另一个是负责后端的server.R。


library(httpuv)
library(htmltools)
library(digest)
library(shiny)
library(ggplot2) 

shinyUI(bootstrapPage(
  
  selectInput(inputId = "n_breaks",
              label = "Number of bins in histogram (approximate):",
              choices = c(10, 20, 35, 50),
              selected = 20),
  
  checkboxInput(inputId = "individual_obs",
                label = strong("Show individual observations"),
                value = FALSE),
  
  checkboxInput(inputId = "density",
                label = strong("Show density estimate"),
                value = FALSE),
  
  plotOutput(outputId = "main_plot", height = "300px"),
  
  # Display this only if the density is shown
  conditionalPanel(condition = "input.density == true",
                   sliderInput(inputId = "bw_adjust",
                               label = "Bandwidth adjustment:",
                               min = 0.2, max = 2, value = 1, step = 0.2)
  )
  
))

server.R的代码如下:

library(shiny)
library(ggplot2) 
shinyServer(function(input, output) {
  
  output$main_plot <- renderPlot({
    
    hist(faithful$eruptions,
         probability = TRUE,
         breaks = as.numeric(input$n_breaks),
         xlab = "Duration (minutes)",
         main = "Geyser eruption duration")
    
    if (input$individual_obs) {
      rug(faithful$eruptions)
    }
    
    if (input$density) {
      dens <- density(faithful$eruptions,
                      adjust = input$bw_adjust)
      lines(dens, col = "blue")
    }
    
  })
})

将这两个代码文件存放到同一个文件夹下,例如我是放在在"C:/Users/cdas3/Documents/R/R-program/shiny-app"。最后在控制台下运行:

library(shiny)
runApp("C:/Users/cdas3/Documents/R/R-program/shiny-app")

之后R会自动打开系统默认的浏览器,并展示出如下的界面。

 

Shiny包的缺点:在部署分享方面,Shiny包只能在本地浏览器展示应用。如果要分享给其它人的话,需要将R代码传到网盘或打包分发,而对方也需要使用runApp命令来进行本地展示。RStudio团队正在开发Shiny服务器构架,让使用者仅需要一个浏览器和网址就可以运行网页应用。不过这将是一个收费的服务。



作者:冯诺依曼
链接1:https://www.jianshu.com/p/3178c42bb1a1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

链接2:用Shiny生态快速搭建交互网页应用 – 拓端tecdat

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值