「R shiny基础」交互式入门

上一节的「R shiny基础」增加一些小控件放在网页中的控件只能说是装饰品,要想真正让用户通过选择不同参数来得到不同结果,还需要这一节的知识

举个例子:我们希望下面网页在左边选择后,右边会有对应的输出

「R shiny基础」交互式入门_第1张图片
示意图

两步创建

创建一个交互式的输出,只需要两步

  1. 在用户界面中增加输出内容项(R object)
  2. server中告知Shiny如何响应输入生成输出

第零步: 网页布局

先按照之前的教程,在网页中添加可见元素

ui <- fluidPage(
  titlePanel("censusVis"),
  
  sidebarLayout(
    sidebarPanel(
      helpText("Create demographic maps with 
               information from the 2010 US Census."),
      
      selectInput("var", 
                  label = "Choose a variable 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(
    )
  )
  )

结果如下:

「R shiny基础」交互式入门_第2张图片
示意图

第一步: 在UI中增加R object

Shiny提供了一组函数,能够在用户界面中(UI)返回R对象。不同函数创建不同类型的输出,如下所示:

输出函数 作用
dataTableOutput 数据表
htmlOutput 原始HTML
imageOutput 图片
plotOutput 作图结果
tableOutput 表格
textOutput 文本
uiOutput 原始HTML
verbatimTextOutput 文本

作为演示,我们选择textOutput作为输出项,修改文章的mainPanel部分

    mainPanel(
      textOutput(outputId = "selectVar")
    )mainPanel(
    )

所有的的Output系列函数都需要有outputId参数,shiny根据这个参数确定输出内容的位置。

第二步: 编写构建输出object的代码

先前编写的ui只是确定了网页中哪个部分用于展示输出信息,具体如何展现输出则是需要一类render函数。shiny可用render类函数如下

渲染函数 输出
renderDataTable DataTable
renderImage 图片(本地的静态文件)
renderPlot 作图结果
renderPrint 任何可打印的输出
renderTable 数据框,矩阵或其他类表格结构
renderText 字符串
renderUI Shiny Tag 对象或HTML

这类函数需要放在server函数中,例如我们希望能能够在mainPanel部分输出用户在sidebar选择的内容,代码如下:

server <- function(input, output) {
  output$selectVar <- renderText({
    sprintf("Your selection is %s\n", input$var)
  })
}

如代码所示,render类函数的第一个参数是R的表达式,代码放在{}中。代码可以是一行,也可以是多行,取决于输出内容的复杂程度。

「R shiny基础」交互式入门_第3张图片
结果

: input后跟着Input类函数中第一个参数值,而output后跟着Output类函数的第一个参数值,如下所示:

「R shiny基础」交互式入门_第4张图片
输入和输出

小结

这部分主要介绍

  • 使用output类函数指定UI中输出的位置
  • 使用render类函数构建输出的R对象
  • 输出的创建代码在{}中。

下一部分介绍如何编写更加复杂的代码,根据输出得到更加复杂的输出。

传送门

Shiny基础教程:

  • 「R shiny 基础」初识Shiny
  • 「R shiny 基础」如何进行网页布局
  • 「R shiny基础」增加一些小控件
  • 「R shiny基础」交互式入门
  • 「R shiny基础」在shiny应用中加载数据和脚本
  • 「R shiny基础」reactive让shiny应用运行速度变快
  • 「R shiny基础」使用shinyapp分享你的Shiny应用

你可能感兴趣的:(「R shiny基础」交互式入门)