Shiny平台构建与R包开发(四)——按钮与响应事件
作为Shiny平台构建与R包开发教程的第四小节,本节向读者进一步强调Shiny server的工作机理,并由此设计按钮点击事件。
Shiny server工作机理与问题
前面的几个小节已经向读者初步解释了Shiny server的工作机理,其核心是"reactive表达式"。它有两种定义方法:
#1 Reactive expression definited separately
exp1 <- reactive({#A reactive expression
})
#2 Reactive expression definited in RenderFunc
output$output_id <- renderFunc({#A reactive expression
})
只要触发任意事件(包括服务器初始化、用户在Shiny网页中做任何工作),"reactive表达式"的值就会重新计算。
如果Shiny APP存在大量数据分析模块,这就意味着,只要用户在Shiny网页的任意一个模块i中点击了一次radio button,所有数据分析模块的图像都自动重新绘制。这将对服务器造成不少负担,也是用户所不希望看到的。
按钮事件
为了解决这一问题,我们往往希望让用户点击某一按钮后,再输出相应内容。案例代码如下:
library(shiny)
library(shinyWidgets)ui<- fluidPage(sidebarLayout(actionBttn(inputId = "bttn",label = "APPLY!",style = "pill", color = "danger"),textOutput("click_times"))
)server <- function(input, output){bttn_click <- 0bttn_text <- NULLoutput$click_times <- renderText({if(input$bttn > bttn_click){bttn_click <<- bttn_click + 1bttn_text <<- paste("Click times =", input$bttn)}bttn_text})
}shinyApp(ui, server)
其中,actionBttn
为按钮的ui,textOutput
定义了文字输出的区域。input$bttn
引用了按钮的id,能够获取按钮的点击次数。Shiny中,每次点击按钮,它的值就会增加1。此时设置另一个变量bttn_click
,并在"reactive表达式"中告诉服务器只有按钮点击次数+1时才能执行if语句中的代码。尽管服务器初始化也是一个事件,也会触发"reactive表达式"的计算,但此时bttn_click
和input$bttn
均为0,因而并不会输出任何文字。如果在上述代码中加入另一个shiny控件,即使用户在Shiny网页中触发其他shiny控件的事件,也不能让input$bttn
的值增加,因而同样不会触发if语句中的代码。
上一篇: Shiny平台构建与R包开发(三)——数据输出
下一篇: Shiny平台构建与R包开发(五)——ui美化
欢迎感兴趣的同行朋友们批评指正。
联系邮箱:hrwu_ecology@163.com
Shiny平台构建与R包开发(四)——按钮与响应事件相关推荐
- Shiny平台构建与R包开发(五)——ui美化
本节简单地向读者介绍Shiny APP中ui的美化方法. shinythemes 利用shinythemes包,您可以选择不同的bootstrap风格,并将其应用到Shiny APP中. 安装完shi ...
- Shiny平台构建与R包开发(三)——数据输出
作为Shiny平台构建与R包开发教程的第三小节,本节向读者展示如何利用Shiny server输出自己想要的数据,包括Rplot.Table.Text等信息. 数据输出机制 仍以上一节的案例为基础: ...
- Shiny平台构建与R包开发(一)——ui布局
本节为Shiny平台构建与R包开发教程的第一小节. Getting Started 初识Shiny时,了解其工作机理非常重要.下面的案例展示了一个最简单的Shiny APP的工作机理: #DO NOT ...
- Shiny平台构建与R包开发
Introduction 在数据库网页搭建教程中已经提到,数据分析决策平台的搭建十分重要.数据库网页是数据分析决策平台的重要表现形式之一,能够很好地将大量数据或其分析结果公开展示,并能提供数据下载.统 ...
- Shiny平台构建与R包开发(七)——Shiny APP部署
本节展示了如何分享和部署Shiny APP.您可以将开发好的Shiny APP部署在自己的服务器上,或是将其部署在公共的平台(即shinyapps.io)上.这里仅分享后者.对于如何将Shiny AP ...
- Shiny平台构建与R包开发(二)——数据输入
作为Shiny平台构建与R包开发教程的第二小节,本节向读者介绍如何利用Shiny server处理用户输入的各种信息.这些信息既包括用户向Shiny上传的数据集,也包括用户对Shiny页面的各种控件( ...
- R包开发每日中国天气
R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可 ...
- R · R 包开发 | 保姆级教程
R · R 包开发 一般在初始阶段我们都是使用别人的函数来完成大部分任务,那些函数大多来自 R 标准安装的包或者可以从 CRAN 下载的包. 安装新的包可以拓展 R 的功能.比如说,安装 ggplot ...
- 直播平台搭建直播软件怎么开发四大功能源码解析
在我们看来时代的变迁,是人们对新事物的适应能力.从我们手机app中可以看到,从我们最开始的文字.图片交流的QQ,历经几年慢慢的演变成图文动画,视频聊天互动应有尽有.社交app由此诞生,以前的互动程序已 ...
最新文章
- QTP连接oracle
- 如何在 Linux 上用密码加密和解密文件
- docker导入镜像报错:invalid diffID for layer xxx: expected “sha256:xxx“, got “sha256:xxx“(文件被更改过)
- c#自定义Json类
- Archive for required library: ‘WebContent/WEB-INF/lib/xxx.jar cannotn
- “约见”面试官系列之常见面试题之第六十一篇之IE和DOM事件流(建议收藏)
- 低代码平台,JeecgBoot v3.0版本发布—新里程牌开始,迎接VUE3版本到来
- python汉语读音_【学习】python 汉语转拼音
- springboot整合nacos配置实现实时更新
- Eureka安全访问
- Spring 集成 AspectJ的原理
- SQL数据库笔试选择题(知识点总结)
- steam移动所有文件至新库文件夹失败_VBA进阶 | 文件操作17:File对象与Files集合详解...
- 如何提高国际短信到达率?
- seo知识技巧-关键词密度选取技巧
- win10无法访问ubuntu共享文件夹(smbd出错排查)
- Excel自动生成条码工具
- 很傻很天真的问题: 什么是语法糖!
- 量子纠缠新发现:令人毛骨悚然的神奇现象
- Explaining away
热门文章
- 今年我读了四个开源项目的源码,来分享下心得
- 985硕士毕业进京东,抱怨身边全是二本和大专生!没什么本事却整天高高在上!打交道太累了!...
- 程序员学霸!top2大学毕业!不到30岁第一次升P9失败!挫折感极强,怀疑人生?网友:没升P7的我,不要面子的吗??...
- Intellij IDEA必备插件,提高效率的“七种武器”!
- 滴滴员工抱怨女朋友要求自己上进!工资必须比她高一半!决定分手却不直说!对女朋友冷暴力等她自己走!...
- 稳定性专题 | Spring Boot 常见错误及解决方法
- 45本互联网圣经级别书籍!包邮送到家!一书在手,天下我有!
- 靠纯技术是否能渡过中年危机
- 强势分享5款超级实用的办公软件,建议收藏!
- c语言 free参数 指针,C语言之free函数以及野指针介绍