r - DT 在 Shiny 和 R : Custom number formatting

标签 r shiny dt

我有一个使用 DT 包显示数据表的 Shiny 应用程序。我想要的是能够以自定义方式格式化列。例如,我希望货币值显示为: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”这样的字符时,该字符仍然显示在开头而不是结尾。此外,数值没有得到“大标记”。

有任何想法吗?

最佳答案

您可以从数据表包中更改 .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)

对我有用吗,那是你尝试过的,但没有看到任何符号?

关于r - DT 在 Shiny 和 R : Custom number formatting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171279/

相关文章:

r - 经验 CDF 函数 `ecdf` 不适用于 "xts"时间序列

R shiny slider输入显示时间

r - 在 Shiny UI 中访问 reactiveValues 的替代方案?

r - Shiny 的 "ERROR: Tabs should all be unnamed arguments"

r - 使用DT包隐藏响应数据表中的某些列

r - 如何在 Ubuntu 18.04 上安装 Rmpfr?

r - 检测 R 中的季节性

正则表达式在 Rmarkdown 中搜索数据表

r - Shiny:ProgressBar,用于将数据从数据库加载到数据表(DT)

r - 范围问题; R 在函数环境中找不到对象