2020-02-14 20200214 Rshiny官网学习

课程1

1.1. Rshiny作用:

可以将数据分析变成互动性网络应用

1.2. shiny 应用结构

  • 一个用户界面脚本,用来控制应用的布局与外表 ui.R
  • 一个服务器脚本 ,包含建构应用所需要的重要指示 server.R

1.3. shiny 运行及退出

  • 需要文件:一个目录中包含ui.R和serve.R
  • 运行 :
    • 方式1
library(shiny)
runApp("my_app")##括号中接目录地址+名字

##更改展示模式:
runApp("my_app",display.mode = "Showcase")
##如果想取消运行,需要点击网页退出,或者点击右上角处退出符号
  • 方式2
    在Rstudio中打开ui.R或者server.R,键盘快捷键ctl + shift + enter 或点击右上角 Run App
  • 退出应用
    点击退出或者点击Rstudio中红点

课程2:构建一个用户界面

创建一个Shiny应用最低要求:

#Ui.R 
ShinyUI(fluidPage(
))
#Server.R
shinyServer(function(input,output){
})
  • 布局
    ui.R 脚本创造用户界面
shinyUI(fluidPage(
  titlePanel("titlie panel"),
  mainPanel(
    h1(""),#一级标题
    p(""),#新起段落
    strong(""),#字体加粗
    em(""),#斜体
    br(),#插入空行
    code(""),#加入代码
    img(src="",height=,width=)#插图,图片需要在UI.R同一目录下的www文件夹下
)
))
##注意:不能出现双引号中包含双引号

课程3:添加控制部件(widgets)

  • 部件:一个用户可以进行交互的网络元素,为我们提供了一种可以向应用发送信息指令的途径
  • Shiny创建部件,,eg:actionButton:创建一个动作按钮,sliderInput:创建滑动条


    image.png
  • 添加部件
    +添加位置:ui.R文件中 sidebarPanel或者mainPanel
    • 部件参数
      • 部件的名称(name for the widget)
      • 标签
        eg:actionButton("action",label="Action"),其中部件名称为action,标签为Action
    • 示例
shinyUI(
  fluidPage(
    titlePanel("class 3"),
    fluidRow(
      column(3,h3("widget"),actionButton("action",label = "Action"),br(),br(),submitButton("Submit")),
      column(3,h3("single checkbox"),checkboxInput("checkbox",label="Choice A",value = TRUE)),
      column(3,checkboxGroupInput("checkGroup",label=h3("checkbox group"),
                                  choices = list("choice"=1,"choice"=2,"choice"=3),selected = 1)),
      column(3,dateInput("data",label = h3("Data input"),value = "2014-01-01"))
    )
  )
)

课程4 响应式输出

  • 响应式输出基本格式:
    ui.R:
ui<-fluidPage(
  titlePanel(),
  sidebarLayout(
    helpText(),
    selectInput(),
  )
  mainPanel(*Output("name"))
)

server.R:

server<-function(input,output){
  output$name<-render*({
})
}
  • 步骤1:向UI中加入R对象(操作脚本ui.R):
shinyUI(
  fliudePage(
  titlePanel(),
  siderbarLayout(
  sidebarPanel(
    helpText(),
    selecInput("",label="",choice=c(),selected=""),
    selecInput("",label="",min=,max=,value=c())
),
  mainPanel(textOutput("text1"))# 加入R对象
)
)
)
  • 步骤2 提供R代码建立对象 (操作脚本server.R)
shinyServer(
  function(input,output){
    output$test1<-renderText({ ##使用render*函数告诉shiny如何搭建对象
      paste("you have selected",input$Var)
    })
  }
)

class-5 使用R 脚本与数据

library(shiny)
library(maps)
library(mapproj)
source("helpers.R")
counties<-readRDS("data/counties.rds")

ui<-fluidPage(
  titlePanel("censusVis"),
  sidebarLayout(
    sidebarPanel (
      helpText("create demographic maps with information from the 2010 US Census."),
      selectInput("var",label = "choose a varibable to display",
                  choices = c("Percent White", "Percent Black",
                              "Percent Hispanic", "Percent Asian"),
                  selected = "Percent White"),
      sliderInput("range",label = "range of interest:",min=0,max=100,value=c(0,100))
    ),
    mainPanel = (plotOutput("map"))
  )
)

server2<-function(input,output){
  output$map<-renderPlot({
    args<-switch(input$var,
                 "Percent White"=list(counties$white,"darkgreen","% White"),
                 "Percent Black"=list(counties$black,"black","% Black"),
                 "Percent Hispanic"=list(counties$hispanic,"darkorange","% Hispanic"),
                 "Percent Asian"=list(counties$asian,"darkkviolet","% Asian"))
    args$min<-input$range[1]
    args$max<-input$range[2]
    do.call(percent_map,args)
  })
}


shinyApp(ui,server2)
  • recap(重点回顾)
    • Server.R所在目录为shiny应用的工作目录
    • shiny执行sever.R开头部分一次,但是render*相关代码会执行多次,用户改变参数会就会重新执行,
    • switch是一个将部件数值转化为R表达式时,使用

class-6 使用响应式表达式

  • 功能:限制部分代码在响应过程中重复运行,原理:将表达式中内容在运行一次后保存至电脑内存,
    • 如果相关部件没有发生改变,之后调用直接返回保存结果
    • 如果相关边间发生改变,重新计算并保存最新结果
  • 格式:reactive({})
  • recap
    • 使用响应表达式,对代码进行模块化,保证自己的应用运行更快速
    • 从其他响应表达式或者render*函数中调用响应表达式
    • 在表达式名称后插入()来调用响应表达式

class-7 分享应用

方式:

  • 分享两个文件server.R and ui.R
    • runUr1 直接从网络链接中下载运行一个Shiny应用:
library(shiny)
runUrl("")
+ runGitHub
runGitHub("","")
    + runGist
+ 网页形式分享

### 输入输出对应关系
mainPanel(plotOutput()) ==> renderPlot
mainPanel(verbatimTextOutput()) ==>  renderPrint 
mainPanel(tableOutput()) ==> renderTable

你可能感兴趣的:(2020-02-14 20200214 Rshiny官网学习)