我有一个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)
)
答案 0 :(得分:3)
第4.5节 - 这个DT文档的行渲染有你的答案: https://rstudio.github.io/DT/options.html
答案 1 :(得分:1)
当我需要通过DT(DataTable)包格式化数值时,我使用formatCurrency
并确保使用空字符串指定currency
参数。从那里,可以使用digits
和mark
等参数调整输出。
以下是此功能的示例:
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