【发布时间】:2016-01-15 06:05:31
【问题描述】:
我有一个使用 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”这样的另一个字符时,该字符仍然显示在开头而不是结尾。此外,数值不会得到“大标记”。
有什么想法吗?
【问题讨论】:
-
对于数字,您可以尝试:
formatCurrency('num', currency = "", interval = 3, mark = ",", digits = 0)。对于欧元,formatCurrency(c('cur'), currency = "€", interval = 3, mark = ",", digits = 1)。不过我不知道怎么把它放在右边 -
formatCurrency-获得 1,000 的方法很好!但是,我仍然没有看到货币编号的欧元符号。如果我按照?formatCurrency中的建议使用\U20AC而不是€,则同样适用