我有一个使用DT
- 包显示数据表的闪亮应用。我想要的是能够以自定义方式格式化列。例如,我想要一个货币值显示如下:1,234.50€而不是DT
- 方式,它显示如下$ 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”时,字符仍然显示在开头而不是结尾。此外,数值不会成为“大标记”。
有什么想法吗?
答案 0 :(得分:2)
您可以从数据包中更改.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 librarys目录中的DT / htmlwidgets / datatables.js文件中。
至于€符号,
formatCurrency(c('cur'), currency = "\U20AC", interval = 3, mark = ",", digits = 2)
对我有用,那就是你尝试过的,你没有看到任何符号?