"$10" )。 -6ren">
gpt4 book ai didi

r - 在 Shiny 和 DataTable 中像字符一样打印但像数字一样排序

转载 作者:行者123 更新时间:2023-12-04 12:20:38 26 4
gpt4 key购买 nike

我想对用美元(因此是一个字符)格式化的 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)

最佳答案

有点晚了,但是DT Package现在具有格式功能,包括 formatCurrency:

# format the columns A and C as currency, and D as percentages
datatable(m) %>% formatCurrency(c('A', 'C')) %>% formatPercentage('D', 2)

从功能页面:

Under the hood, these formatting functions are just wrappers for the rowCallback option to generate the appropriate JavaScript code. Similarly, there is a formatDate() function that can be used to format date/time columns. It has a method argument that takes values from a list of possible conversion methods: toDateString, toISOString, toLocaleDateString, toLocaleString, toLocaleTimeString, toString, toTimeString, toUTCString.

关于r - 在 Shiny 和 DataTable 中像字符一样打印但像数字一样排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26574939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com