Ste*_*cke 11 r datatables shiny jquery-datatables
默认情况下,使用闪亮的DataTable中的数千个分隔符渲染大数字.
文档读(对我来说)应该已经显示了千位分隔符.我是否遇到了兼容性问题,或者我是否需要在代码中添加更多内容,如果是,那又怎么样?
[更新]还有另一个SO问题,试图解决闪亮的预格式化数据的排序.问题尚未解决,但建议另一条路线 - 事先格式化.这是一条可取的路线,如果是这样,如何正确解决其他OP的排序问题?
我试图改善闪亮表的输出,以提高可读性.我已成功使用另一个SO问题来冻结标题,但我正在努力使数字格式正确.
library(shiny)
runApp(
list(ui = fluidPage(
tagList(
singleton(tags$head(tags$script(src='//cdn.datatables.net/fixedheader/2.1.2/js/dataTables.fixedHeader.min.js',type='text/javascript'))),
singleton(tags$head(tags$link(href='//cdn.datatables.net/fixedheader/2.1.2/css/dataTables.fixedHeader.css',rel='stylesheet',type='text/css')))
),
dataTableOutput("mytable")
)
, server = function(input, output, session){
output$mytable <- renderDataTable(iris*1000,
options = list(
pageLength = 50,
language.thousands=",",
initComplete = I("function(settings, json){
new $.fn.dataTable.FixedHeader(this, {
left: true
} );
}")
)
)
})
)
Run Code Online (Sandbox Code Playgroud)
看看DataTable文档,它看起来就像设置语言一样.数千就足够了:
DataTables的内置数字格式化程序(formatNumberDT)用于格式化表信息中使用的大数字.
默认情况下,DataTables将使用language.thousandsDT中指定的字符(反过来,默认情况下是逗号)作为千位分隔符.
在formatNumber中它有一个可以添加的函数,但是,这对我来说是一个新的,所以我不确定在现有代码的上下文中如何使用这个函数.
$('#example').dataTable( {
"formatNumber": function ( toFormat ) {
return toFormat.toString().replace(
/\B(?=(\d{3})+(?!\d))/g, "'"
);
};
} );
Run Code Online (Sandbox Code Playgroud)
Chrome:版本39.0.2171.71 m
Dan*_*Dan 11
我知道这是一个相当古老的帖子,但今天也在努力解决这个问题,以为其他人可能会从这个解决方案中获得价值.
自从提出问题后,该DT
软件包就被RStudio(Github或CRAN)发布了.乍一看,如何格式化数字并不太明显,因为它们不是formatNumber
像它们那样的相应函数formatCurrency
.解决它的方法是使用formatCurrency
并只将currency参数设置为空.以下示例.
library(shiny)
library(DT)
runApp(
list(ui = fluidPage(
DT::dataTableOutput("mytable")
),
server = function(input, output, session) {
output$mytable <- DT::renderDataTable(
DT::datatable(iris*1000,
options = list(pageLength = 50,
columnDefs = list(list(className = 'dt-left',
targets = 0:4)))) %>%
formatCurrency(1:4, '')
)
}
)
)
Run Code Online (Sandbox Code Playgroud)
与问题format
的prettyNum
是,这些功能产生的字符,而不是NUMERICS这一事实.因此,无法为渲染表设置样式.此示例可能是以下解决方案:
output$tab <- renderDataTable({
datatable(mytable) %>%
formatCurrency(columns = ..., currency = "", interval = 3, mark = ",") %>%
formatStyle(
columns = ...,
color = styleInterval(myThreshold, c("black", "red"))) })
Run Code Online (Sandbox Code Playgroud)