簡體   English   中英

R Shiny DataTables:不按列而是按行格式化數字

[英]R Shiny DataTables: Format numbers not by column but by row

我的數據是這樣的矩陣:

             Buy and Hold              Strategy
[1,]    1.0000000000000000   19.0000000000000000
[2,]   -0.6300786023496699   -0.2361973739022651
[3,]   -0.0872213557701079   -0.0244237977843418
[4,]   -0.3461103323781194   -0.1010012410191289
[5,]    0.0000000000000000    0.4949083503054990
[6,]    0.2520044841505053    0.2418168087629348
[7,]   -0.7946470924762163   -0.7731378277502762
[8,] 1864.0000000000000000 1707.0000000000000000

如您所見,我需要按行而不是按列進行格式化。 例如[1,]應該不帶小數,因此有1和19。但是[2,]-Row [7,]行應為xx.x%的百分比,而Row [8,]應為數字不帶小數。 我該如何實現? 我不知道如何使用這些回調函數,我認為解決方案就在這里。

您可以使用rowCallback函數:

library(DT)

data <- matrix(c(0,0.64,-0.76234,0.43,1,19),nrow=3,byrow=T)

    datatable(data,options=list(
            rowCallback=JS("function( row, data, index ) {
                           $('td:eq(0)', row).html(data[0] % 1 != 0 | data[0]==0 ? (data[0]*100).toFixed(1) +'%':data[0]);
                           $('td:eq(1)', row).html(data[1] % 1 != 0 | data[1]==0 ? (data[1]*100).toFixed(1) +'%':data[1]);
                           }
                           ")))

本示例將數字乘以100,四舍五入到小數點后1位,如果該數字有小數部分或為0,則加一個百分號。如果沒有,則數字保持原樣。

它僅在數據表的第一和第二列上執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM