簡體   English   中英

閃亮和R中的DT:自定義數字格式

[英]DT in Shiny and R: Custom number formatting

我有一個使用DT -package顯示數據表的閃亮應用程序。 我想要的是能夠以自定義方式格式化列。 例如,我想要一個貨幣值顯示如下:1,234.50€而不是DT -way,它顯示它像$ 1,234.5(注意符號的變化,貨幣符號的位置以及后面的數字)小數點)。

MWE看起來像這樣:

library(shiny)
library(DT)

shinyApp(
  # UI
  ui = fluidPage(DT::dataTableOutput('tbl')),

  # SERVER
  server = function(input, output) {
    dat <- data.frame(cur = 1234.5, # supposed to be displayed as: 1,234.50€ | Bad! 
                                         # displayed as $1,234.5
                      perc = 0.123456, # 12.34% | Good!
                      num = 1000) # 1,000 | Bad! displayed as 1000

    # render DT
    output$tbl = DT::renderDataTable(
      datatable(dat) %>%
        formatCurrency(c('cur'), "$") %>%
        formatPercentage('perc', 2) %>%
        formatRound('num', digits = 0)
    )
  }
)

然而,它做得相當不錯,當將貨幣符號更改為 ,符號消失。 當插入另一個字符如“E”時,字符仍然顯示在開頭而不是結尾。 此外,數值不會得到“大標記”。

有任何想法嗎?

您可以從datatable包更改.js文件中的貨幣符號的位置。

編輯DTWidget.formatCurrency函數的行

 $(thiz.api().cell(row, col).node()).html(currency + markInterval(d, interval, mark));

簡單地說

 $(thiz.api().cell(row, col).node()).html(markInterval(d, interval, mark) + currency);

在R庫中的DT / htmlwidgets / datatables.js文件中。

至於歐元符號,

formatCurrency(c('cur'), currency = "\U20AC", interval = 3, mark = ",", digits = 2)

對我有用,那就是你嘗試過的,你沒有看到任何符號?

暫無
暫無

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

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