过年掌握一个新技能,基本教程翻译自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.R 和 server.R 中。
UI如下是案例Hello Shiny的 ui 对象代码 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 Shiny的 server 函数 # 定义绘制柱状图的代码逻辑
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 包含 ui 和 server . 你可以新建一个文件件,然后把 app.R 放在里面,然后打开一个R终端,按照如下方式运行 library(shiny)
runApp('my_app') # my_app应该替换成你的应用文件夹名
复习这一片文章主要是根据一个简单的Shiny应用了解Shiny的结构和创建过程。分为如下步骤 新建一个项目文件夹 在文件夹中编辑 app.R 使用 runApp 启动应用 使用ctrl+c关闭应用
参考
|