之后的文章一般会发于此处了:个人博客
Shiny是基于R的实时计算服务器(serve),并通过CSS,htmlwidge,Javascript来进行拓展的web **交互界面(UI)**展现的构造工具包。
R作为一种以本地会话(local session)为主要使用场景的语言,交互性、可嵌入性和自动化一直是其软肋。Rstudio希望发展基于R构建BI工具,就需要将本地的会话和线上的展示交互结合。因此,这也引出了shiny为回应以上需求,而在结构设计上着墨的三个根本要素:服务器(Serve)、交互界面(UI)和反应连结(Reactivity)。
这也可以引出shiny设计的一个根本思路:反应表达式(reactive expression)。最简洁的理解反应式表达的的示例:
input values => R code => output values/result
当表达式开始执行的时候,将会自动跟踪读取到的反应值以及调用的其他反应表达式。如果反应表达式所依赖的反应值和反应表达式发生了改变,那么该反应表达式的返回值也应该变化,改变一个反应值会自动引发依赖于它的反应表达式重新执行。
——shiny中文教程
具体而言,shiny的构成组件主要是这个样子:
- 此处的serve和ui不等同于shiny中实际的serve和ui函数,仅是指对于app用户来说的最终呈现情况
基于以上对于shiny设计思路的介绍,就能容易理解shiny代码的基本结构,ui部分(对象值),server部分(函数)以及app结合部分(对象值)。
library(shiny)
ui #UI部分 <- fluidPage(
numericInput(inputId = "n","Sample size", value = 25),
plotOutput(outputId = "hist")
)
server #服务器部分 <- function(input, output) {
output$hist <- renderPlot({
hist