小編最近在用業(yè)余時間學(xué)習(xí)R的一個可視化工具Rshiny,在這個過程當(dāng)中,接觸到R中的一個數(shù)據(jù)包叫DT。在自學(xué)查資料時,發(fā)現(xiàn)網(wǎng)上對這個數(shù)據(jù)包的介紹十分有限。所以,小編在這里現(xiàn)學(xué)現(xiàn)賣,寫一篇小文給大家介紹一下這個R包。鑒于小編水平有限,有任何錯誤和紕漏,還歡迎各位大神指正。 那好,我們就開始吧!~
有人可能會詫異,一個數(shù)據(jù)包而已嘛,用得著特別介紹嗎?小編最開始也是這么想的……然而當(dāng)我找到官方網(wǎng)頁,打開這個數(shù)據(jù)包的使用方法介紹的時候,確確實實被里面紛繁復(fù)雜的各類參數(shù)給驚到了。一個R包的protocol竟然做出了堪比一個分析方法的protocol的厚重感,這讓我不由得肅然起敬。 扯了這么多,這個DT包到底是干什么用的呢?DT包提供了JavaScript庫DataTables在R中的一個接口,使得R對象(矩陣或者數(shù)據(jù)框)可以在HTML頁面上顯示為表格,并提供了對數(shù)據(jù)的篩選、分頁和排序等功能。 翻譯成人話就是,DT包使得JavaScript中的方法能在R中被應(yīng)用,并將矩陣或者數(shù)據(jù)表在網(wǎng)頁中可視化成表格,還能實現(xiàn)各種功能。小編先用R中自帶的數(shù)據(jù)集iris給大家一個直觀感受: install.packages('DT') #安裝DT數(shù)據(jù)包 注:可視化之前可能還需要加載HTTP和WebSocket服務(wù)程序 install.packages('httpuv') install.packages('yaml') library(httpuv) library(yaml) datatable(iris) 由圖可見,在沒有任何多余設(shè)置的情況下,僅僅使用DT包中的datatable函數(shù),就可以直接可視化表格數(shù)據(jù),并且自動完成對數(shù)據(jù)的分頁顯示,使用戶可以對每一列進行升(降)序排列,控制每頁顯示條目的多少,以及對數(shù)據(jù)進行檢索等一系列功能。
DT包中最主要的函數(shù)就是datatable()函數(shù),完整參數(shù)列表如下:
實話說小編看見這個參數(shù)列表就已經(jīng)先慫了。但是參數(shù)越多就意味著自主權(quán)越多,越能按照自己的心意設(shè)置想展現(xiàn)的樣子,這對于可視化來說是很重要的。 所以在這篇小文里,小編先拋磚引玉,簡要粗淺的講一些我覺得比較好理解的,常用的參數(shù),剩下的參數(shù)設(shè)置,就請感興趣的各位自行研究啦~
1、表格編輯:
將參數(shù)editable更改為TRUE,即可對呈現(xiàn)出來的表格內(nèi)容進行編輯。鼠標(biāo)懸停在數(shù)據(jù)上方雙擊,即可改變表格內(nèi)容。 2、行名顯示: 默認(rèn)顯示行名,通過設(shè)置rownames =FALSE,來控制行名不顯示。另外也可以rownames等于一組向量來為行名重新進行賦值。 3、列名設(shè)置: 默認(rèn)顯示列名,可以通過列名編輯來對一個或多個列名進行更改。 以上圖的iris數(shù)據(jù)集為例:
將列名修改成了如下圖所示: 也可以根據(jù)列名來指定某一列進行列名改變,例如:
將列名'Sepal.Width'修改為'A Better Name',注意,被修改的原名在賦值號后面 也可以根據(jù)位置對某一列或某幾列進行指定,對其進行列名更改
將第二列的列名更改為'Another Better Name',將第四列的列名更改為'Yet Another Name' 4、設(shè)置數(shù)據(jù)表標(biāo)題
caption參數(shù)設(shè)置數(shù)據(jù)表標(biāo)題 簡單講了以上幾個小參數(shù),接下來我們來看datatable參數(shù)中的大boss——options參數(shù)列表。這個參數(shù)的取值是一系列小參數(shù)的list,個別小參數(shù)里還包含更次一級的參數(shù),讓人眼花繚亂。以下小編挑一些給大家介紹一下: 1)設(shè)置列寬: 默認(rèn)情況下,列寬設(shè)置選項autoWidth為FALSE,代表表格自動分配寬度值,每一列的列寬度值均一。如果要人為修改某一列或者某幾列的寬度值,則需要先將autoWidth設(shè)置從FALSE更改為TRUE,之后用columnDefs參數(shù)設(shè)置特定列和寬度。例如:
以上代碼表示將第一列與第三列的寬度設(shè)置成 ’200px’ 效果如下: 原始數(shù)據(jù)表,列寬均一 第一列和第三列的列寬度改變: 2)一些初始化設(shè)置 可以通過option參數(shù)列表進行一系列初始化設(shè)置:
上述代碼的意思是顯示iris數(shù)據(jù)表的前20行,第一列的對齊方式為左對齊(即:dt-left),每頁顯示長度為5條數(shù)據(jù),每頁顯示條目長度選項列表為(5,10,15,20),效果如下: 3)排序相關(guān),例如:
上述代碼的意思為,取數(shù)據(jù)集mtcars的前30行,對第四列降序排列,若第四列數(shù)值相同,則按照第二列升序進行排列。這種設(shè)置只是控制表格的初始呈現(xiàn)方式,之后在頁面上點擊排序按鈕,依舊可以改變排列順序。 4)DOM元素:默認(rèn)情況下,表格具有以下由單字母表示的DOM元素:l- length (changing inputcontrol) 長度菜單,f-(filtering input) 篩選搜索框,t- (table) 表格主體,i- (information summary) 信息摘要和p- ( pagination control) 分頁控件??梢赃x擇使用dom選項來組合想要可視化顯示的子集。例如:
需要注意的是,表格主體默認(rèn)顯示,即不管dom選項里包不包含t,都顯示表格。 5)選項中的回調(diào):我們還可以在options選項中自定義回調(diào)函數(shù)(callback function)。例如,可以在選項中使用initComplete回調(diào)函數(shù)在初始化后將表頭的背景顏色更改成其他顏色:
上述代碼的意思為,將表頭的背景顏色改為藍色,列名改為黃色,所使用的顏色都是RGB顏色代碼。 注:函數(shù)JS( ) 表示這個元素不是普通的字符向量,而是JavaScript代碼。這個特殊的功能,使得使用者可以在R中直接編輯JavaScript函數(shù)(使用jsonlite)并在瀏覽器中對其解碼。 對于令人頭痛的options參數(shù)列表的具體應(yīng)用,小編可以負(fù)責(zé)任的告訴大家,想全部掌握,那是——不可能的。粗略估計大小參數(shù)大概有幾十個吧。不過大家不用過于憂慮,小編找到一個好東西:https:///reference/option/ 這個網(wǎng)站對datatable函數(shù)中的options參數(shù)進行了匯總,并且提供了查詢功能。界面如圖: 可以根據(jù)下方黑框內(nèi)的功能提示,查找自己想要的參數(shù)用法。也可以在搜索框內(nèi)直接輸入?yún)?shù),比如columnDefs列定義參數(shù),點擊搜索之后會呈現(xiàn)其具體用法和該參數(shù)下面所有的二級甚至三級參數(shù)設(shè)置,一目了然,十分方便。
好了,對于DT包的簡單介紹就到這里了,更多使用方面的細節(jié)還請查詢官方網(wǎng)站:https://rstudio./DT/。小編也會將自己最近在學(xué)的小工具和小方法給大家持續(xù)分享,感謝關(guān)注,我們下次見!么么噠~! 有生信分析請留言 TCGA | 小工具 | 數(shù)據(jù)庫 |組裝| 注釋 | 基因家族 | Pvalue 基因預(yù)測 |bestorf | sci | NAR | 在線工具 | 生存分析 | 熱圖 生信不死 | 初學(xué)者 | circRNA | 一箭畫心| 十二生肖 | circos 舞臺|基因組 | 黃金測序 | 套路 | 雜談組裝 | 進化 | 測序簡史 |
|