shiny 入门第三课: 进阶
你什么都没有
1引言
今天来学习一些 shiny 里面的 响应表达式 相关的函数,对于后面写自己的 App 是 非常有用的。
2reactive 函数
我们看看下面这个例子:
我们添加了 summary(rnorm(input$num))
这样一个信息通过 verbatimTextOutput("stats")
显示在 ui 里。你会发现我们都要输入 rnorm(input$num) 这个东西,我们可以 把这个输入变量保存在缓存里 ,使用保存的变量来调用它,这里使用 reactive 函数可以保存输入的变量值:
只要 input$num 一发生改变,则 data() 的值也同时发生改变,这就是响应式过程。我们需要使用 data()
调用它,代码可以优化为:
对应的流程为:
3isolate 函数
看下面例子:
我们给 ui 里添加了 textInput 来输入图的标题, input$title 作为输入,这里有个问题就是,每当我们改变 input$num 的时候,同时 input$title 也会同时更新一次,只不过内容是一样的,这时候我们可以使用 isolate 函数来隔离 input$title ,返回的就是一个 非响应式的值 :
对应的优化代码为:
响应流程:
4observeEvent 函数
这个函数感觉像在响应是过程中加了一个 开关 ,可以通过开关控制响应过程 。下面我们看 actionButton 控件来如何控制:
通过在 observeEvent 函数里添加控件输入 input$clicks 来控制响应过程:
代码:
这个 直接打印显示在后台 了,我 点击了 3 次 ui 的按钮,后台打印出 1,2,3 的数字 :
5observe 函数
observe 则是一个更隐式的语法:
运行代码:
library(shiny)
ui <- fluidPage(
actionButton(inputId = "clicks",
label = "Click me")
)
server <- function(input, output) {
observe({ print(input$clicks) })
}
shinyApp(ui = ui, server = server)
点击 3 次按钮结果:
区别:
6eventReactive 函数
为 延迟响应函数 ,这个函数就比较有用,在画图的时候设置好参数,点击按钮再出图! 下面例子:
函数结构:
需要 input$go 输入才能把 rnorm(input$num) 输出传给 data:
这样我们改变好参数以后,通过点击按钮就可以更新图了。
流程:
7reactiveValues 函数
例子:
通过 reactiveValues 函数创建了含有 100 个数的 data 变量,通过选择 input$norm
或 input$unif
来给 rv 的 data 重新赋值为 rnorm(100)
或 runif(100)
。
8冬日
别人给你的伤,需要你自己去治愈。
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦,。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀跟着 Genome Research 学画图: 等高线散点图
◀...