R语言制作网页

浏览: 1531

作者简介作者:闵家勇 西南财经大学硕士 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(“图片名字.格式”)。好啦,今天就介绍这么多了,大家有兴趣可以自己动手实现一个简单的网页哦! (附:以上征婚广告位真实内容!!!)

推荐 0
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册