生物信息学与算法Cook RR语言与统计分析

「R shiny 基础」初识Shiny

2019-01-27  本文已影响182人  xuzhougeng

传送门

Shiny基础教程:

简介

shiny一个能够方便构建交互式网页应用的R包,在这一部分我们将会开始学习如何搭建一个Shiny应用。

如果你还没有安装Shiny的话,那么你需要打开R语言(显然,你需要联网)

install.packages("shiny")

案例

Shiny 提供了7个内置案例方便你熟悉shiny的不同属性,了解shiny如何工作。并且每个案例都是完全独立的shiny应用。让我们先从Hello Shiny这个例子开始,了解如何用R的faithful数据集绘制一个直方图。用户可以选择直方图中每个分箱的大小,并且实时得到反馈。

library(shiny)
runExample("01_hello", port=9999, host="0.0.0.0")

随后那么你就可以通过服务器的IP地址加端口号访问这个应用。

网页

Shiny应用的架构

一个简单的Shiny应用只需要一个app.R脚本,一般放在一个项目文件夹下,例如newdir/app.R, 那么运行的方式为, runApp("newedir").

app.R包括三个部分

Shiny 0.10.2之前,Shiny不支持单文件应用,ui对象和server函数需要单独放在ui.Rserver.R中。

UI

如下是案例Hello Shinyui对象代码

library(shiny)

# 定义柱状图的交互界面
ui <- fluidPage(

  #标题
  titlePanel("Hello Shiny!"),
  # 侧边栏,包含输入和输出的定义
  sidebarLayout(

    # 输入的侧边栏
    sidebarPanel(

      # 输入:关于bin的数目
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)

    ),
   # 展示输出的界面
    mainPanel(

      # 输出: 柱状图
      plotOutput(outputId = "distPlot")
    )
  )
)

sever

如下是案例Hello Shinyserver函数

# 定义绘制柱状图的代码逻辑

server <- function(input, output) {

  # 代码逻辑:
  # 用户选择不同的bin,产生不同的柱状图

  output$distPlot <- renderPlot({

    x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    hist(x, breaks = bins, col = "#75AADB", border = "white",
         xlab = "Waiting time to next eruption (in mins)",
         main = "Histogram of waiting times")

    })

}

代码很简洁,基本就是等待用户提供一个输入,然后返回一个输出, 和普通的R脚本没有多大区别,唯一区别就是代码是嵌套在reanderPlot函数里面。

运行一个新的Shiny应用

每一个shiny应用都有相同的结果: 一个app.R包含uiserver. 你可以新建一个文件件,然后把app.R放在里面,然后打开一个R终端,按照如下方式运行

library(shiny)
runApp("my_app") # my_app应该替换成你的应用文件夹名

复习

这一片文章主要是根据一个简单的Shiny应用了解Shiny的结构和创建过程。分为如下步骤

参考

上一篇 下一篇

猜你喜欢

热点阅读