dav*_*ers 7 sorting r datatables shiny
我想对使用美元格式化的DataTable列进行排序(因此是一个字符).我用于scales::dollar()格式化.这会将字段转换为导致排序问题的字符(例如,"$8" > "$10").
如何将字段排序为数字?或者,我可以将字段保留为数字,只打印美元格式吗?
app.R(需要Shiny 0.10.2)
server <- function(input, output) {
output$foo_table <- renderDataTable({
x <- seq(8000, 12000, by = 1000)
x <- scales::dollar(x)
d <- data.frame(x, stringsAsFactors = FALSE)
d
})
}
ui <- shinyUI(fluidPage(
mainPanel(dataTableOutput("foo_table"))
)
)
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
小智 6
有点晚了,但是DT 包现在具有格式功能,包括 formatCurrency:
# format the columns A and C as currency, and D as percentages
datatable(m) %>% formatCurrency(c('A', 'C')) %>% formatPercentage('D', 2)
Run Code Online (Sandbox Code Playgroud)
从功能页面:
在幕后,这些格式化函数只是 rowCallback 选项的包装器,用于生成适当的 JavaScript 代码。同样,有一个 formatDate() 函数可用于格式化日期/时间列。它有一个方法参数,它从可能的转换方法列表中获取值:toDateString、toISOString、toLocaleDateString、toLocaleString、toLocaleTimeString、toString、toTimeString、toUTCString。