百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

R中的数据表可视化工具——DT包 rstudio数据可视化

bigegpt 2024-10-12 06:42 3 浏览

小编最近在用业余时间学习R的一个可视化工具Rshiny,在这个过程当中,接触到R中的一个数据包叫DT。在自学查资料时,发现网上对这个数据包的介绍十分有限。所以,小编在这里现学现卖,写一篇小文给大家介绍一下这个R包。鉴于小编水平有限,有任何错误和纰漏,还欢迎各位大神指正。

那好,我们就开始吧!~

有人可能会诧异,一个数据包而已嘛,用得着特别介绍吗?小编最开始也是这么想的……然而当我找到官方网页,打开这个数据包的使用方法介绍的时候,确确实实被里面纷繁复杂的各类参数给惊到了。一个R包的protocol竟然做出了堪比一个分析方法的protocol的厚重感,这让我不由得肃然起敬。

扯了这么多,这个DT包到底是干什么用的呢?DT包提供了JavaScript库DataTables在R中的一个接口,使得R对象(矩阵或者数据框)可以在HTML页面上显示为表格,并提供了对数据的筛选、分页和排序等功能。

翻译成人话就是,DT包使得JavaScript中的方法能在R中被应用,并将矩阵或者数据表在网页中可视化成表格,还能实现各种功能。小编先用R中自带的数据集iris给大家一个直观感受:

install.packages("DT") #安装DT数据包

library(DT) # 载入数据包

datatable(iris) # DT包中的核心函数datatable()

注:可视化之前可能还需要加载HTTP和WebSocket服务程序

install.packages("httpuv")

install.packages("yaml")

library(httpuv)

library(yaml)

datatable(iris)


由图可见,在没有任何多余设置的情况下,仅仅使用DT包中的datatable函数,就可以直接可视化表格数据,并且自动完成对数据的分页显示,使用户可以对每一列进行升(降)序排列,控制每页显示条目的多少,以及对数据进行检索等一系列功能。

DT包中最主要的函数就是datatable()函数,完整参数列表如下:

datatable(data, options = list(), class="display", callback = JS("return table;"), rownames, colnames, container, caption = NULL, filter = c("none","bottom", "top"), escape = TRUE, style = "default", width = NULL, height = NULL, elementId = NULL, fillContainer = getOption("DT.fillContainer", NULL), autoHideNavigation = getOption("DT.autoHideNavigation",NULL), selection = c("multiple", "single", "none"), extensions = list(), plugins = NULL, editable = FALSE)

实话说小编看见这个参数列表就已经先怂了。但是参数越多就意味着自主权越多,越能按照自己的心意设置想展现的样子,这对于可视化来说是很重要的。

所以在这篇小文里,小编先抛砖引玉,简要粗浅的讲一些我觉得比较好理解的,常用的参数,剩下的参数设置,就请感兴趣的各位自行研究啦~

1、表格编辑:

DT::datatable (head (iris) , editable = TRUE)

将参数editable更改为TRUE,即可对呈现出来的表格内容进行编辑。鼠标悬停在数据上方双击,即可改变表格内容。

2、行名显示:

默认显示行名,通过设置rownames =FALSE,来控制行名不显示。另外也可以rownames等于一组向量来为行名重新进行赋值。

3、列名设置:

默认显示列名,可以通过列名编辑来对一个或多个列名进行更改。

以上图的iris数据集为例:

datatable(head(iris),colnames = c('Here', 'Are','Some', 'New', 'Names'))

将列名修改成了如下图所示:



也可以根据列名来指定某一列进行列名改变,例如:

datatable(head(iris), colnames= c('A Better Name' ='Sepal.Width'))

将列名'Sepal.Width'修改为'A Better Name',注意,被修改的原名在赋值号后面


也可以根据位置对某一列或某几列进行指定,对其进行列名更改

datatable(head(iris),colnames = c('Another BetterName' = 2, 'Yet Another Name' = 4))

将第二列的列名更改为'Another Better Name',将第四列的列名更改为'Yet Another Name'


4、设置数据表标题

datatable( head(iris),caption ='Table 1: This is a simple caption for the table.')

caption参数设置数据表标题

简单讲了以上几个小参数,接下来我们来看datatable参数中的大boss——options参数列表。这个参数的取值是一系列小参数的list,个别小参数里还包含更次一级的参数,让人眼花缭乱。以下小编挑一些给大家介绍一下:

1)设置列宽:

默认情况下,列宽设置选项autoWidth为FALSE,代表表格自动分配宽度值,每一列的列宽度值均一。如果要人为修改某一列或者某几列的宽度值,则需要先将autoWidth设置从FALSE更改为TRUE,之后用columnDefs参数设置特定列和宽度。例如:

datatable(iris, options = list( autoWidth = TRUE, columnDefs = list(list(width = '200px', targets = c(1, 3)))))

以上代码表示将第一列与第三列的宽度设置成 ’200px’

效果如下:

原始数据表,列宽均一



第一列和第三列的列宽度改变:



2)一些初始化设置

可以通过option参数列表进行一系列初始化设置:

datatable( head ( iris,20), options = list(columnDefs = list ( list(className = 'dt-left', targets = 1)), pageLength = 5, lengthMenu = c(5, 10, 15, 20)))

上述代码的意思是显示iris数据表的前20行,第一列的对齐方式为左对齐(即:dt-left),每页显示长度为5条数据,每页显示条目长度选项列表为(5,10,15,20),效果如下:



3)排序相关,例如:

datatable(head(mtcars, 30), options= list(order = list(list(4, 'desc'), list(2, 'asc'))))

上述代码的意思为,取数据集mtcars的前30行,对第四列降序排列,若第四列数值相同,则按照第二列升序进行排列。这种设置只是控制表格的初始呈现方式,之后在页面上点击排序按钮,依旧可以改变排列顺序。



4)DOM元素:默认情况下,表格具有以下由单字母表示的DOM元素:l- length (changing inputcontrol) 长度菜单,f-(filtering input) 筛选搜索框,t- (table) 表格主体,i- (information summary) 信息摘要和p- ( pagination control) 分页控件。可以选择使用dom选项来组合想要可视化显示的子集。例如:

datatable(iris, options = list(dom = 'pt')) # 可视化只显示表格主体和分页器

datatable(iris, options = list(dom = 'lpt')) # 可视化显示表格主体、分页器和长度选择菜单

需要注意的是,表格主体默认显示,即不管dom选项里包不包含t,都显示表格。


5)选项中的回调:我们还可以在options选项中自定义回调函数(callback function)。例如,可以在选项中使用initComplete回调函数在初始化后将表头的背景颜色更改成其他颜色:

datatable(head(iris, 20), options = list(

initComplete = JS(

"function(settings, json) {",

"$(this.api().table().header()).css({'background-color':'#000080','color': '#ffff00'});",

"}")))

上述代码的意思为,将表头的背景颜色改为蓝色,列名改为黄色,所使用的颜色都是RGB颜色代码。

注:函数JS( ) 表示这个元素不是普通的字符向量,而是JavaScript代码。这个特殊的功能,使得使用者可以在R中直接编辑JavaScript函数(使用jsonlite)并在浏览器中对其解码。


对于令人头痛的options参数列表的具体应用,小编可以负责任的告诉大家,想全部掌握,那是——不可能的。粗略估计大小参数大概有几十个吧。不过大家不用过于忧虑,小编找到一个好东西:https://datatables.net/reference/option/

这个网站对datatable函数中的options参数进行了汇总,并且提供了查询功能。界面如图:


可以根据下方黑框内的功能提示,查找自己想要的参数用法。也可以在搜索框内直接输入参数,比如columnDefs列定义参数,点击搜索之后会呈现其具体用法和该参数下面所有的二级甚至三级参数设置,一目了然,十分方便。

好了,对于DT包的简单介绍就到这里了,更多使用方面的细节还请查询官方网站:https://rstudio.github.io/DT/。小编也会将自己最近在学的小工具和小方法给大家持续分享,感谢关注,我们下次见!么么哒~!

更多生信分析需求请加微信:13120220117

相关推荐

恢复软件6款汇总推荐,帮你减轻数据恢复压力!

在当今数字化生活中,数据丢失的风险如影随形。无论是误删文件、硬盘故障,还是遭遇病毒攻击,丢失的数据都可能给我们带来不小的麻烦。此时,一款优秀的数据恢复软件就成为了挽救数据的关键。今天,为大家汇总推荐...

中兴星星一号刷回官方原版recovery的教程

【搞科技教程】中兴星星一号的官方recovery也来说一下了,因为之前给大家分享过了第三方的recovery了,之前给大家分享的第三方recovery也是采用一键刷入的方式,如果细心的朋友会发现,之前...

新玩机工具箱,Uotan柚坛工具箱软件体验

以前的手机系统功能比较单调,各厂商的重视程度不一样,所以喜欢玩机的朋友会解锁手机系统的读写权限,来进行刷机或者ROOT之类的操作,让使用体验更好。随着现在的手机系统越来越保守,以及自身功能的增强,...

三星g906k刷recovery教程_三星g906k中文recovery下载

【搞科技教程】看到有一些机友在找三星g906k的第三方recovery,下面就来说一下详细的recovery的刷入方法了,因为手机只有有了第三方的recovery之后才可以刷第三方的root包和系统包...

中兴星星2号刷recovery教程_星星二号中文recovery下载

【搞科技教程】咱们的中兴星星2手机也就是中兴星星二号手机的第三方recovery已经出来了,并且是中文版的,有了这个recovery之后,咱们的手机就可以轻松的刷第三方的系统包了,如果没有第三方的re...

数据恢复软件有哪些值得推荐?这 6 款亲测好用的工具汇总请收好!

在数字生活中,数据丢失的阴霾常常突如其来。无论是误删工作文档、格式化重要磁盘,还是遭遇系统崩溃,都可能让我们陷入焦虑。关键时刻,一款得力的数据恢复软件便是那根“救命稻草”。今天,为大家精心汇总6...

中兴u956刷入recovery的教程(中兴e5900刷机)

【搞科技教程】这次主要来给大家说说中兴u956手机如何刷入第三方的recovery,因为第三方的recovery工具是咱们刷第三方rom包的基础,可是很我欠却不会刷,所以太这里来给大家整理了一下详细的...

联想A850+刷recovery教程 联想A850+第三方recovery下载

【搞科技教程】联想A850+的第三方recovery出来了,这个第三方的recovery是非常的重要的,比如咱们的手机要刷第三方的系统包的时候,都是需要用到这个第三方的recovery的,在网上也是有...

工具侠重大更新 智能机上刷机一条龙完成

工具侠是针对玩机的机油开发的一款工具,不管是发烧级别的粉丝,还是普通小白用户,都可以在工具侠上找到你喜欢的工具应用。这不,最新的工具侠2.0.16版本,更新了专门为小白准备的刷机助手工具,以及MTK超...

shift+delete删除的文件找回6种硬盘数据恢复工具

硬盘作为电脑的重要存储设备,如同一个巨大的数字仓库,承载着我们日常工作、学习和生活中的各种文件,从珍贵的照片、重要的工作文档到喜爱的视频、音乐等,都依赖硬盘来安全存放。但有时,我们可能会不小心用sh...

使用vscode+Deepseek 实现AI编程 基于Cline和continue

尊敬的诸位!我是一名专注于嵌入式开发的物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与AI的无尽可能。这两天deepseek3.0上线,据说编程能力比肩Cl...

详解如何使用VSCode搭建TypeScript环境(适合小白)

搭建Javascript环境因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境,可以参考文章:https://...

使用VSCode来书写你的Jupyter Notebooks

现在你可以在VScode里面来书写你的notebook了,使用起来十分的方便。下面来给大家演示一下环境的搭建。首先需要安装一个jupyter的包,使用下面的命令安装:pip3install-ih...

使用VSCode模板提高Vue开发效率(vscode开发vue插件)

安装VSCode安装Vetur和VueHelper插件,安装完成后需要重启VScode。在扩展插件搜索框中找到如下Vetur和VueHelper两个插件,注意看图标。添加Vue模板打...

干货!VsCode接入DeepSeek实现AI编程的5种主流插件详解

AI大模型对编程的影响非常之大,可以说首当其冲,Cursor等对话式编程工具渐渐渗透到开发者的工作中,作为AI编程的明星产品,Cursor虽然好用,但是贵啊,所以咱们得找平替,最好免费那种。俗话说,不...