R语言制作网页

2020-06-16 00:00:00 语言 网页 我们可以 控件 布局

作者简介

作者:闵家勇 西南财经大学硕士 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,使其随着我们对控件的掌握实现不同的输出结果和效果,具体的内容以及操作我将会在下一篇文章中展示。这些基本的大家有兴趣可以自己实现哦。甚至可以做一个自己喜欢的网页,如下就是我帮同学实现的一个非常简单的例子,具体网址为cr-1314.shinyapps.io/zh


顺便提一下,我们要做网站的话,好首先在rstudio.com/products/sh

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

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

相关文章