R语言制作网页

2018 年 5 月 23 日 R语言中文社区

15

作者简介

作者:闵家勇 西南财经大学硕士 R语言爱好者


 shiny是R语言非常好用和好玩的一个包,它不需要我们去了解网页语言以及如何制作网页等就可以实现用R语言构建交互式Web应用程序。它可以使我们以更加方便和交互性的方式去展现结果、数据和模型等,甚至还可以插入图片、动画、视频以及声音等,可以说是非常炫酷了!

 

下面简单的基本原理以及快速实现,你也可以拥有一个自己做成的网页啦~

如果你没有安装shiny包,通过以下途径先安装一个,

> install.packages("shiny")

> library(shiny)

在具体操作之前,我们可以首先单独创建一个文件夹,比如叫做shiny

然后就可以通过Shiny Web App选择Multiple File(ui.R/serverR)来进行第一步。

接下来就是关键啦!

Shiny App由两部分构成,一部分是ui,即user interface,另一部分是server function。

其中ui用于控制页面的布局,server是一种函数,用于构建或者重建在ui中展示的象。在不懂也没关系,下面我会一步步地解。

 

首先,于ui的使用主要适用于网的布局,基本的网布局如下

shinyUI(fluidPage(

 titlePanel("title panel"),

 sidebarLayout(

   sidebarPanel( "sidebar panel"),

   mainPanel("main panel")

  )

))

Shiny ui.R 要用fluidPage函数来展示一个自动调件尺寸大小来适应浏览器,所有件放在fluidPage函数中,得到整整个app的布局。

而titlePanel 和 sidebarLayout 是 fluidPage中最常用的元素,通简单的ui实现,我可以得到上的布局。

 

布局完之后,我就可以在不同的部分加入自己想要的西了。如以下基本的内容。

ui <- fluidPage(

 h1("Header 1"),

 h2("Header 2"),

 h3("Header 3"),

 h4("Header 4"),

 h5("Header 5"),

 h6("Header 6"),

 hr(),

 br(),

 p(strong("bold")),

 p(em("italic")),

 p(code("code")),

 p("Click",span(style="color:blue","Here")),

 a(herf="www,rstudio.com","RStudio Home ")

是shiny里面的tags,我可以使用names(tags)来看到有什么组件我们可以加入,得到自己所想要的效果,就像上图一样。

    除了上述基本的组件以外,shiny中还有一些很有用的控件可供我们使用,一下是一些经常会使用的控件。

#ui.R

 

shinyUI(fluidPage(

  titlePanel("基本的控件"),

 

  fluidRow(

   

    column(3,

           h3("actionButtons"),

           actionButton("action",label = "Action"),

           br(),

           br(),

           submitButton("Submit")),

   

    column(3,

           h3("checkboxInput"),

           checkboxInput("checkbox",label = "Choice A", value = TRUE)),

    column(3,

          checkboxGroupInput("checkGroup",

                              label =h3("CheckboxGroup"),

                              choices =list("Choice 1" = 1,

                                            "Choice 2" = 2, "Choice 3" = 3),

                              selected = 1)),

   

    column(3,

           dateInput("date",

                     label = h3("Dateinput"),

                     value ="2014-01-01"))  

  ),

 

  fluidRow(

   

    column(3,

           dateRangeInput("dates",label = h3("Date range"))),

   

    column(3,

           fileInput("file", label =h3("File input"))),

   

    column(3,

           actionLink("action",

           label=h3("ActionLink"),

           icon("calendar"))),

   

    column(3,

          numericInput("numericInput",

                        label =h3("numericInput"),

                        value = 1))  

 

    ),

 

  fluidRow(

   

    column(3,

           radioButtons("radio",label = h3("radioButtons"),

                        choices =list("Choice 1" = 1, "Choice 2" = 2,

                                      "Choice 3" = 3),selected = 1)),

   

    column(3,

           selectInput("select",label = h3("selectInput"),

                       choices =list("Choice 1" = 1, "Choice 2" = 2,

                                      "Choice 3" = 3), selected = 1)),

   

    column(3,

           sliderInput("slider1",label = h3("sliderInput"),

                       min = 0, max = 100,value = 50),

           sliderInput("slider2","",

                       min = 0, max = 100, value= c(25, 75))

    ),

   

    column(3,

           textInput("text", label =h3("textInput"),

                     value = "Entertext"))  

  )

  ))

其中fluidRow()函数是使所加入的内容排列成同一行,一般配合column()使用。

通过这些控件,我们可以实现许多非常有趣炫酷的内容,真正的实现交互式的体验。当然要实现交互式的体验,我们需要去定义server function,使其随着我们对控件的掌握实现不同的输出结果和效果,具体的内容以及操作我将会在下一篇文章中展示。这些最基本的大家有兴趣可以自己实现哦。甚至可以做一个自己喜欢的网页,如下就是我帮同学实现的一个非常简单的例子,具体网址为https://cr-1314.shinyapps.io/zhizhizhengyou/。

顺便提一下,我们要做网站的话,最好首先在www.rstudio.com/products/shiny-server/

中注册一个属于自己的Shiny Server,然后就可以自己定义网站名字什么的,而且需要插入图片则需要在前面创建的shiny文件夹里新建文件夹,名字为www,然后将图片放进去,调用的时候则是用img(“图片名字.格式”)。好啦,今天就介绍这么多了,大家有兴趣可以自己动手实现一个简单的网页哦!

 

(附:以上征婚广告位真实内容!!!)



 大家都在看 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

登录查看更多
4

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【哈佛《CS50 Python人工智能入门》课程 (2020)】
专知会员服务
111+阅读 · 2020年4月12日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
139+阅读 · 2020年2月16日
【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
187+阅读 · 2019年12月28日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
R语言自然语言处理:文本分类
R语言中文社区
7+阅读 · 2019年4月27日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
10 个让你学习各种兴趣爱好的App 和网站
高效率工具搜罗
21+阅读 · 2019年1月11日
教你打造一个属于自己的「搜索引擎」
少数派
9+阅读 · 2018年10月23日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Arxiv
10+阅读 · 2020年4月5日
Learning in the Frequency Domain
Arxiv
11+阅读 · 2020年3月12日
Neural Response Generation with Meta-Words
Arxiv
6+阅读 · 2019年6月14日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
8+阅读 · 2018年5月1日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【哈佛《CS50 Python人工智能入门》课程 (2020)】
专知会员服务
111+阅读 · 2020年4月12日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
139+阅读 · 2020年2月16日
【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
187+阅读 · 2019年12月28日
相关资讯
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
R语言自然语言处理:文本分类
R语言中文社区
7+阅读 · 2019年4月27日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
10 个让你学习各种兴趣爱好的App 和网站
高效率工具搜罗
21+阅读 · 2019年1月11日
教你打造一个属于自己的「搜索引擎」
少数派
9+阅读 · 2018年10月23日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
相关论文
Arxiv
10+阅读 · 2020年4月5日
Learning in the Frequency Domain
Arxiv
11+阅读 · 2020年3月12日
Neural Response Generation with Meta-Words
Arxiv
6+阅读 · 2019年6月14日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
8+阅读 · 2018年5月1日
Arxiv
8+阅读 · 2018年1月25日
Top
微信扫码咨询专知VIP会员