我希望1 1 12456
1 2 78910
1 3 34568
1 4 68942
表中数值的行为与使用时DT
输出中的数值相同:
print
我知道options(scipen = -1)
options(digits = 3)
cars/1000000
与呈现表格不同,但应该有办法实现。我可以使用print
或signif
来限制数字但我丢失的信息值非常低,这会对高值产生不同的影响。
这是最小的例子。
round
任何线索?
答案 0 :(得分:1)
您可以尝试使用rowCallback
使用toExponential
javascript函数将符号更改为科学。
以下是一个例子:
library(shiny)
library(DT)
library(dplyr)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
),
# Show a plot of the generated distribution
mainPanel(
DTOutput("dt")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$dt <- renderDT({
datatable(cars/10,options = list(
rowCallback = JS(
"function(row, data) {",
"for (i = 1; i < data.length; i++) {",
"if (data[i]>1000 | data[i]<1){",
"$('td:eq('+i+')', row).html(data[i].toExponential(1));",
"}",
"}",
"}")
)
)
})
}
# Run the application
shinyApp(ui = ui, server = server)
答案 1 :(得分:1)
DT
软件包还具有formatSignif()功能,例如:
output$tbl <- renderDataTable({
DT::datatable(dat) %>%
formatSignif(columns = c('speed', 'dist'), digits = 3)
})