为存储为字符串的数字自定义R数据表列的排序

时间:2016-10-11 18:09:21

标签: r shiny shinydashboard

我有一个Shiny仪表板,我在其中使用DataTable包(代码紧跟Shiny documentation中的方法)来构建我的表。

一切正常,但出于审美原因,我想用逗号分隔符显示数字,因此1000000呈现1,000,000

到目前为止,我的方法只是重新格式化数字列,如:

table$col <- formatC(table$col, format="d", big.mark=',')

这样可以正常工作,但是当我想使用标准函数对网页中的表进行排序时,我会按字典顺序进行排序,因为这些数字现在被编码为字符串。

无论如何要么修改表格排序功能,要么用他们用逗号分隔符渲染的方式对数字进行编码,但排序的行为与这些基本数字列的预期一致?

如果有用,可以像将其添加到server.R文件中一样重现:

table <- morley
table$Speed <- formatC(table$Speed, format="d", big.mark=',')

output$table <- DT::renderDataTable(
  DT::datatable(table)
)

2 个答案:

答案 0 :(得分:3)

第4.5节 - 这个DT文档的行渲染有你的答案: https://rstudio.github.io/DT/options.html

答案 1 :(得分:1)

当我需要通过DT(DataTable)包格式化数值时,我使用formatCurrency并确保使用空字符串指定currency参数。从那里,可以使用digitsmark等参数调整输出。

以下是此功能的示例:

library(dplyr)

data = data.frame(
   value1 = runif(10) * 10000,
   value2 = runif(10) * 100000,
   stringsAsFactors = F
 )

DT::datatable(data) %>%
   DT::formatCurrency(columns = "value1", currency =  "", mark = ",") %>%
   DT::formatCurrency(columns = "value2", currency =  "", mark = " ", digits = 0)

输出为here