2015-11-25 33 views
2

我的數據是這樣的矩陣:[R閃亮數據表:格式的數字沒有被列,但通過

   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,] - 行[7,]應該是一個百分比像xx.x%和行[8,]再次是一個數字沒有小數。我怎樣才能做到這一點?我不知道如何使用這些回調函數,我以爲其實存在着解決方案..

+0

作爲'%'還是不帶小數的標準是什麼?例如第5行的'0.000000000',第1列是'0%'還是'0'?或者說,如果兩欄都沒有小數點,那麼它們不是百分比? – NicE

+0

基本上所有的東西都是除第一和第八行之外的一個百分比,它們是沒有小數和百分比的正常數字 – MichiZH

+0

是的「0.0000000000」是正常數或百分比(第五行第一列) – NicE

回答

4

您可以使用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,則添加一個百分號。如果不是,則它保持原樣。

它只在數據表的第一列和第二列進行此操作。