ShinyApp中的表格:第三天笔记
shiny中的表格
除了在shinyapp中生成图片,有时还需要生成表格,用于查看数据,以及保存下载 表格分为两类:动态和静态。静态的表格更有利于打印和输出pdf,而动态的表格提供了更多的交互式选项,还会响应屏幕的大小来进行缩放
静态表格:shiny中自带的table
shiny中自带的表格,有利于减少其他依赖包,降低内存消耗,定制和美化会受到限制
## 多文件结构的shinyapp,每个*.r代表一个R文件## global.r## 存放一些需要运行的代码
library(tidyverse)
library(shiny)
data.main <- starwarsmin_height <- unique(min(starwars$height, na.rm = TRUE))
max_height <- unique(max(starwars$height, na.rm = TRUE))## ui.r
navbarPage("shiny::renderTable",tabPanel("Start Narrow",uiOutput('height_narrow_slider'), #增加滑块tableOutput('star_narrow') #表格),tabPanel("Start Wide",uiOutput('height_wide_slider'),tableOutput('star_wide')),tabPanel("Start List",tableOutput('star_lists'))
)## server.r
function(input, output, session){# Input widgetsoutput$height_narrow_slider <- renderUI({sliderInput(inputId = "height_limit_star_narrow",label = "height limit",min = min_height,max = max_height,value = min_height)})output$height_wide_slider <- renderUI({sliderInput(inputId = "height_limit_star_wide",label = "height limit",min = min_height,max = max_height,value = min_height)})# Tableoutput$star_narrow <- renderTable({starwars %>%select(name, species, homeworld, height) %>%filter(height <= input$height_limit_star_narrow) %>%arrange(desc(height))})# striped = TRUE,# hover = TRUE,# na = "[Missing]")output$star_wide <- renderTable({starwars %>%select(name:species) %>% filter(height <= input$height_limit_star_wide) %>%arrange(desc(height))})output$star_lists <- renderTable({starwars %>%select(name, films, vehicles, starships) %>%# unnest()mutate_if(is.list, list(~map_chr(.,~paste(.x, collapse = "<br>"))))}, width = "100%",sanitize.text.function = function(x) x)}
静态表格:kableExtra
kableExtra包的表格,也是静态的,比shiny中自带的表格具有更大的灵活性 kableExtra在server部分并不使用 render*() 函数,但ui部分还是使用tableOutput这个函数输出
说明文档链接:https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html#From_other_packages
## ui.r
#install.packages("kableExtra")
library(kableExtra)navbarPage("kableExtra",tabPanel("Star Narrow",fluidPage(tableOutput('star_narrow'))),tabPanel("Star Wide",fluidPage(tableOutput('star_wide'))),tabPanel("Star List",fluidPage(tableOutput('star_lists'))),collapsible = TRUE
)## server.r
library(kableExtra)
library(tidyverse)function(input, output, session){output$star_narrow <- function(){starwars %>%select(name, species, homeworld, height) %>%arrange(desc(height)) %>%kable() %>%kable_styling(bootstrap_options = c("striped", "hover"))}output$star_wide <- function(){starwars %>%select(name:homeworld) %>%arrange(desc(height)) %>%kable() %>%kable_styling()}output$star_lists <- function(){starwars %>%select(films:starships) %>%kable() %>%kable_styling() ##支持list,会将list内容用逗号分隔}}
动态表格:Rstudio 的 DT
DT包的表格,这个属于动态表格,具有灵活交互式展现表格的特点
使用文档链接:https://rstudio.github.io/DT/
## ui.r
library(DT)navbarPage("DT Interactive Tables",tabPanel("Star Narrow",fluidPage(DTOutput('star_narrow'))),tabPanel("Star Wide",fluidPage(checkboxInput("show_rownames",label = "Show rownames?"),DTOutput('star_wide'))),tabPanel("Star List",fluidPage(DTOutput('star_lists'))),collapsible = TRUE
)## server.r
library(DT)
library(tidyverse)
function(input, output, session) {output$star_narrow <- renderDT({starwars %>%select(name, species, homeworld, height) %>%arrange(desc(height))})output$star_wide <- renderDT({starwars %>%select(name:homeworld) %>%arrange(desc(height)) %>%datatable(extensions = "Responsive", rownames = input$show_rownames)})output$star_lists <- renderDT({starwars %>%select(films:starships) %>%datatable()})}
制作基因信息列表
## help.r
# 创建基因信息链接
# createLink for GeneCards ------------------------------------------------
geneCardsLink <- function(val,name) {sprintf('<a href="https://www.genecards.org/cgi-bin/carddisp.pl?gene=%s" target="_blank" class="btn btn-primary">%s</a>',val,name)
}# createLink for NCBI -----------------------------------------------------
ncbiLink <- function(val,ncbi) {sprintf('<a href="https://www.ncbi.nlm.nih.gov/gene/?term=%s" target="_blank" class="btn btn-primary">%s</a>',val,ncbi)
}# createLink for Esemble --------------------------------------------------
ensemblLink <- function(val,ensembl) {sprintf('<a href="https://www.ensembl.org/Homo_sapiens/Gene/Summary?db=core;g=%s" target="_blank" class="btn btn-primary">%s</a>',val,ensembl)
}# ui.r
fluidPage(DT::DTOutput("gene_info")
)# server.r
library(readr)
data <- read_csv("data/geneInfo.csv")
source("helper.R")function(input, output, session){geneInfo <- reactive({tmp <- datatmp$NCBI <- ncbiLink(tmp$SYMBOL,tmp$SYMBOL)tmp$Ensembl.ASIA <- ensemblLink(tmp$ENSEMBL,tmp$ENSEMBL)tmp$GeneCards <- geneCardsLink(tmp$SYMBOL,tmp$SYMBOL)tmp})output$gene_info <- DT::renderDT(#output$preview3 <- reactable::renderReactable({DT::datatable( geneInfo(), escape = FALSE, #决定超链接能否被渲染出来rownames = F,extensions = "Responsive", ##缩小页面在所在行的最前面出现加号,点击显示被隐藏的列options=list(pageLength = 15,lengthMenu = list(c(15, 50, 100, -1),c(15, 50, 100, "ALL")),#-1显示所有的scrollX = TRUE,scrollY = TRUE,fixedColumns = TRUE,fixedHeader = TRUE)))}
作业:热门的词云图+基因信息表格
# help.r
# createLink for GeneCards ------------------------------------------------
geneCardsLink <- function(val,name) {sprintf('<a href="https://www.genecards.org/cgi-bin/carddisp.pl?gene=%s" target="_blank" class="btn btn-primary">%s</a>',val,name)
}# createLink for NCBI -----------------------------------------------------
ncbiLink <- function(val,ncbi) {sprintf('<a href="https://www.ncbi.nlm.nih.gov/gene/?term=%s" target="_blank" class="btn btn-primary">%s</a>',val,ncbi)
}# createLink for Esemble --------------------------------------------------
ensemblLink <- function(val,ensembl) {sprintf('<a href="https://www.ensembl.org/Homo_sapiens/Gene/Summary?db=core;g=%s" target="_blank" class="btn btn-primary">%s</a>',val,ensembl)
}# ui.r
fluidPage(sliderInput("num", label = h3("选择热门基因的数量"), min = 1, max = 200, value = c(100)),# Copy the line below to make a set of radio buttonsradioButtons("radio", label = h3("please choose taxid"),choices = list("human" = 9606, "pig" = 9823), selected = 9606),shiny::plotOutput( "cloud"),DT::DTOutput("gene_info")# server.r
fluidPage(sliderInput("num", label = h3("选择热门基因的数量"), min = 1, max = 200, value = c(100)),# Copy the line below to make a set of radio buttonsradioButtons("radio", label = h3("please choose taxid"),choices = list("human" = 9606, "pig" = 9823), selected = 9606),shiny::plotOutput( "cloud"),DT::DTOutput("gene_info")
image-20210504211148970
【参考资料】
https://mp.weixin.qq.com/s/VCRukFCQaagTF6GKu2DLgA
ShinyApp中的表格:第三天笔记相关推荐
- 数据刷新中的并行改进(三) (r5笔记第79天)
在之前的两篇中分享了数据刷新的并行改进,其实在对很多的数据表做了切分之后,数据刷新的总体负载就基本是平均的了.如何使得刷新的过程更加平滑和完整,我们还是需要做一些工作的.首先各个节点中都存在相同的表( ...
- 信号完整性(SI)电源完整性(PI)学习笔记(二十八)S参数在信号完整性中的应用(三)
S参数在信号完整性中的应用(三) 1.对S参数元素的解释取决于对端口的指派情况. 元器件内部的确切连接将会影响如何解释每个S参数.最常见的情况就是6条不同传输线的端口指派,则对于每个具体S参数的解释也 ...
- 印象笔记打开错误_只会用手机自带便签?这三款笔记软件分分钟秒杀
原创文 | 文艺旁·点击上方收听音频 正文共:2555字 16图 预计阅读时间:7分钟 手机自带便签的唯一优点在于打开迅速,但整理大量文件,多设备同步就非常不方便了. 第三方笔记软件优点: 多级 ...
- 如何批量处理word中的表格
如何批量处理word中的表格 如何批量处理word中的表格 1 . 批量设置word中的表格宽度 比如,我这有一个word文档有200多个表格(全部是3列的),现在要求第一列宽度3cm,第二列4cm, ...
- word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...
- Camelot:从pdf中提取表格数据
Camelot:从pdf中提取表格数据 文章目录: 一.Camelot的介绍和安装 1. Camelot介绍 2. Camelot的安装 3. 其他 二.Camelot的使用 1. 快速入门使用 2. ...
- ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!
在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...
- php中插入表格 标签,PHP_HTML中的表格元素,一,table标签。tablegt - phpStudy
HTML中的表格元素 一, 1,border属性的参数值是数字,表示表格边框宽度所占的像素点数.它也可以不带有参数值使用,仅表示该表格是有边框的.例如, 2,width和height属性的作用是指定表 ...
- layui table 添加img_layui中table表格的基本操作
最近抽空总结了下layui中table表格的相关配置,解释的比较全面,可供大家参考,页面效果如下: table表格.png table表格html部分: 新增 备注 编辑 table表格渲染js (包 ...
- axure 8 表格合并_搞定LaTeX论文中的表格
论文中的表格制作一直是令人头疼的事情,直到我遇见了这个Excel插件. 在此之前,我用过一些其他的小工具,例如在线的latex表格生成器 以及离线的LaTable软件 .他们虽然部分解决了手动写lat ...
最新文章
- 算法工程师落地_模型的更新升级能力
- sublime Text3常用快捷键
- mybitis第三讲:关联查询
- java 编译引入库_eclipse编译cpp文件,并且引用其他预编译的库
- 样条之贝塞尔(Bezier)
- [Java网络编程]UDP通信程序练习
- java与java ee_Java EE 8 MVC:全局异常处理
- 个推成为首家支持统一推送接口标准的第三方推送服务商!
- 从无到有整合SpringMVC-MyBatis项目(2):搭建SpringMVC项目
- php str_replace替换特殊字符
- C++ :stringstream介绍,使用方法与例子(转)
- Android 开发之 bindService() 通信
- jquery核心的学习进程一
- 05.[图解TCPIP(第5版) 文档简单整理
- 新手如何学习PLC编程?
- NLP算法-情绪分析-snowNLP算法库
- 国内著名高校飞跃手册整理
- Shell字符串的替换
- ip获取所在城市名称接口-JAVA
- 后台管理系统之用JQuery-validate做表单验证
热门文章
- 传说华为面试爱问正则,这不海外留学生校招面试题来了
- x86 单线并发多拨_带宽“单线多拨“倍增大法教程
- 2.字节跳动2019雀魂启动
- 全智通A+常见问题汇总解答—A+配件仓库—维修领料—编辑领料单:最后一个仓库无法显示
- 未实施内容安全策略 (CSP)
- 机器学习(ML)、深度学习(DL)和图像处理(opencv)专用英语词典
- bootloader 详细介绍
- “Bluetooth keeps stopping“
- 6-2 折半查找的实现 (10 分)
- cracker.jar 文件打不开