目录

1.需求

2.问题

3.解决

3.1 DT包

3.2 reactable包

3 reactablefmtr包(插入图标)

4 结果


1.需求

在shiny的使用中,需要有一个交互式的表格来实现查看,操作以及管理功能。

具体场景是用户提交一则申请,管理员进行批准和拒绝操作。

2.问题

有现成的插件,但是不够美观

不方便使用observe、observeEvent等在shiny server监听button事件

3.解决

3.1 DT包


DT::datatable(cal_df_display,# filter = list(position="top",targets=c(3,4,5,6)),selection = "none",# callback = childtb_js,# rownames = rowNames,escape = FALSE,options = list(keys = TRUE,fixedHeader = TRUE,dom="frtip",search = list(regex=TRUE,caseInsensitive=TRUE),# columnDefs = list(list(targets = c(2,3,4,5,6,7,8), orderable = FALSE)),pageLength = 15)# extensions = c("Select","SearchPanes"))

3.2 reactable包

问题:想要修改DT包的theme风格

R代码:


library(reactable)
reactable(cal_df_display,showPageInfo = TRUE,# filterable = TRUE,searchable = TRUE,highlight = TRUE,# selection = "multiple",defaultPageSize = 10,# onClick = "select",bordered = TRUE,resizable = TRUE,columns = list(# 序号 = colDef(footer = function(values) sprintf("总计:%.0f人", max(values)))序号 = colDef(footer = sprintf("总计:%.0f人", nrow(cal_df_display))),全天检查 = colDef(minWidth = 50),分类 = colDef(minWidth = 80),是否课题 = colDef(minWidth = 80),是否确认 = colDef(cell = function(value) {# Render as ✘ or ✓if (value == "0") "\u2718" else "\u2713"},style = function(value) {# Render as ✘ or ✓if (value == "0"){color="#e00000"}else{color = "#008000"}list(color = color, fontWeight = "bold")}),确认结果 = colDef(cell = function(value) {# Render as ✘ or ✓if (value == "0") "\u2718" else "\u2713"},style = function(value) {# Render as ✘ or ✓if (value == "0"){color="#e00000"}else{color = "#008000"}list(color = color, fontWeight = "bold")}),是否管理员 = colDef(cell = function(value) {# Render as ✘ or ✓if (value == "0") "\u2718" else "\u2713"},style = function(value) {# Render as ✘ or ✓if (value == "0"){color="#e00000"}else{color = "#008000"}list(color = color, fontWeight = "bold")}),operation = colDef(name = "",sortable = FALSE,resizable=TRUE,html = TRUE,minWidth = 150# footer = sprintf("总计:%.0f人", nrow(cal_df_display)))),defaultColDef = colDef(footerStyle = list(fontWeight = "bold")))

3 reactablefmtr包(插入图标)

问题:if (value == "0") "\u2718" else "\u2713"   # Render as ✘ or ✓,此处的"\u2718" 为ASCII编码,rstudio默认为utf-8编码,字符无法识别会报错。

解决:使用reactablefmtr,采用图标替代,✘图标为”times“,✓图标为“check”(fontawesome)。

R代码:

#先添加图标列以及颜色列
cal_df_display <- cal_df_display %>% mutate(admin_icon=case_when(是否管理员==0 ~ "times",是否管理员==1 ~ "check"),admin_icon_color=case_when(是否管理员==0 ~ "#e00000",是否管理员==1 ~ "#008000"),confirm_icon=case_when(是否确认==0 ~ "times",是否确认==1 ~ "check"),confirm_icon_color=case_when(是否确认==0 ~ "#e00000",是否确认==1 ~ "#008000"),result_icon=case_when(确认结果==0 ~ "times",确认结果==1 ~ "check"),result_icon_color=case_when(确认结果==0 ~ "#e00000",确认结果==1 ~ "#008000"))#使用icon_ref,icon_color_ref添加对应图标及颜色
cal_df_display %>% select(-operation)%>%
reactable(.,defaultSorted = "是否确认",columns = list(# 序号 = colDef(cell = icon_sets(df,icons = "times",colors = "#e00000",icon_position = "over")),admin_icon =colDef(show = FALSE),admin_icon_color=colDef(show = FALSE),confirm_icon =colDef(show = FALSE),confirm_icon_color=colDef(show = FALSE),result_icon =colDef(show = FALSE),result_icon_color=colDef(show = FALSE),`是否管理员` = colDef(cell = icon_sets(.,icon_size = 20,icon_ref = "admin_icon",icon_color_ref="admin_icon_color",icon_position = "over")),是否确认 = colDef(cell = icon_sets(.,icon_size = 20,icon_ref = "confirm_icon",icon_color_ref="confirm_icon_color",icon_position = "over")),确认结果 = colDef(cell = icon_sets(.,icon_size = 20,icon_ref = "result_icon",icon_color_ref="result_icon_color",icon_position = "over"))
))

4 结果

R shiny 交互式表格相关推荐

  1. 河南农大姚文与张会勇课题组合作发表长文综述,系统总结R/Shiny在开发交互式生物学网络工具中的应用...

    河南农大姚文与张会勇课题组合作发表长文综述,系统总结R/Shiny在开发交互式生物学网络工具中的应用 近日,河南农业大学生命科学学院姚文教授(校聘)联合张会勇教授课题组在国际知名期刊<Brief ...

  2. 「R shiny基础」交互式入门

    上一节的「R shiny基础」增加一些小控件放在网页中的控件只能说是装饰品,要想真正让用户通过选择不同参数来得到不同结果,还需要这一节的知识 举个例子:我们希望下面网页在左边选择后,右边会有对应的输出 ...

  3. R shiny echart4r 常见问题整理

    手机端适配 使用R shiny制作app时,想要app同时适配电脑端和手机端,但echart4r包绘制的图形适配到手机端会出现字体大小不合适的情况. 解决方案如下: 在html代码中或ui代码中对屏幕 ...

  4. R语言交互式可视化包CanvasXpress推荐

    文章目录 1 CanvasXpress包简介 1.1 canvasXpress安装及加载 2 绘图实战 2.1 三维散点图 2.2 矩阵散点图 2.3 箱线图 2.4 交互图表导出和交互 3 更多信息 ...

  5. r语言 将表格导出为csv_如何将R语言中表格数据输出为Excel文件.pdf

    如何将R 语言中的表格数据输出为Excel 文件 熊荣川 六盘水师范学院生物信息学实验室 xiongrongchuan@126.com /u/Bearjazz 平台的开放性使得R 语言具有了丰富的运算 ...

  6. R Shiny中的抵押贷款计算器

    介绍 (Introduction) I recently moved out and bought my first apartment. Of course, I could not pay it ...

  7. 在R shiny中开启showcase mode来帮助我们更好理解代码

    遇到很长的shiny代码时候,我作为一个刚入门的新人并不知道哪段代码起到了一个什么样的作用. 在查阅了众多资料后发现shiny自带的showcase mode可以帮助我们理解代码,在框中亮起的部分就是 ...

  8. 在Windows系统下,基于WLS从零开始部署我的 R shiny项目到 Docker 中,并将镜像发布到 Docker Hub(内附详细操作流程)

    前言 需要将项目部署到Docker中,我之前也没有接触过这个,纯萌新记录一下整个过程. 注意:整个流程对于我来说是能成功跑通的,但我也不知道有没有冗余操作(因为我也不太懂),欢迎大家提出宝贵意见~ 我 ...

  9. R语言处理表格数据(一)

    目录 写在前面 1. Excel有上百列数据,把每列数据首尾相接合并成一个向量(一列) 2. 合并多个数据表(.csv) 3. 实现2个Excel表相同数据的关联,并提取相同数据到新表 4. 获取Ex ...

  10. R语言交互式可视化包CanvasXpress

    作者简介 刘永鑫,博士.2008年和2011年毕业东北农业大学微生物学和作物遗传育种专业.2014年在中科院遗传发育所获生物信息学博士学位,2016年博士后出站留所工作,任宏基因组学实验室工程师,目前 ...

最新文章

  1. 笔记-项目质量管理-质量保证和质量控制
  2. 玩转GIT系列之【git pull和git fetch的区别】
  3. linux命令之watch -- 周期性地执行命令
  4. HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割
  5. js如何获取计算机当前时间,js获取当前系统时间
  6. SpringBoot自动配置实现原理及源码解析(2.3.x)
  7. iOS核心动画CALayer和UIView
  8. VS2013+cuda8.0配置及案例
  9. Vue导出excel表格设置样式的解决方案
  10. 手机虚拟摄像头_用手机当摄像头开直播 无他相机推荐
  11. “开会” 引发的思考
  12. 怀旧小虎队 谨防挂马网站和极虎病毒
  13. 知道创宇云上安全三件套专治上云“水土不服”
  14. android 6g 有必要吗,手机6G运存真的有必要吗?这篇实测告诉你
  15. STM32F103系列的单片机定时器
  16. RationalDMIS 7.1 量块程序 2020
  17. 计算机科班与培训开发编程的区别在哪里?
  18. 【Python第一课】课程介绍
  19. 课堂结队作业:二维数组(2)
  20. 说好的牛市来了,我的股票怎么跌停了?

热门文章

  1. kvm虚拟机上安装kata
  2. 提示磁盘被写保护怎么办?
  3. 找工作就来程序c#/.net开发求职招聘QQ群
  4. Address Sanitizer(Asan)原理及相关GCC选项列表
  5. 计算机ppt制作教案,《电脑幻灯我来秀—制作个性母版》教学设计
  6. 【Pygame实战】第三版本最终确认——《愤怒的小鸟梦幻爆破》上线回归,爆赞~
  7. 显卡内存管理机制及驱动实现(Intel gma500为例)
  8. 全球顶尖科创和商业巨头齐聚,巨杉数据库亮相2021CNBC全球科技大会
  9. 放弃FD渠道模式 诺基亚中国新攻略
  10. 5分钟,教你创建在线聊天营销机器人