如何使用renderDT强制使用科学符号
我希望如何使用renderDT强制使用科学符号,r,datatables,shiny,dt,R,Datatables,Shiny,Dt,我希望DT表格中的数值行为与打印输出中的数值行为相同,使用时: options(scipen = -1) options(digits = 3) cars/1000000 但无论有什么选择,DT似乎并不关心: 我知道,print与呈现表格不同,但应该有一种方法来实现这一点。我可以使用signif或round来限制数字,但我会丢失非常低值的信息,这会对高值产生不同的影响 我希望将值保留为数字,以便列可以正确排序 如果只有3位数字,则值应保持经典,如果更多,则应保持科学 这是一个最小的例子
DT
表格中的数值行为与打印
输出中的数值行为相同,使用时:
options(scipen = -1)
options(digits = 3)
cars/1000000
但无论有什么选择,DT似乎并不关心:
我知道,print
与呈现表格不同,但应该有一种方法来实现这一点。我可以使用signif
或round
来限制数字,但我会丢失非常低值的信息,这会对高值产生不同的影响
- 我希望将值保留为数字,以便列可以正确排序李>
- 如果只有3位数字,则值应保持经典,如果更多,则应保持科学
library(shiny)
library(DT)
library(dplyr)
options(scipen = -1)
options(digits = 3)
# 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"),
DTOutput("dt2")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$dt <- renderDT({cars/1000000})
output$dt2 <- renderDT({
mutate_all(cars/1000000, funs(signif(., digits = 1)))
})
}
# Run the application
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
选项(scipen=-1)
选项(数字=3)
#为绘制直方图的应用程序定义UI
ui您可以尝试使用rowCallback
使用toExponential
javascript函数将符号更改为scientific
下面是一个例子:
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)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
#为绘制直方图的应用程序定义UI
uiDT
软件包也有一个功能可以帮助实现这一点,例如:
输出$tbl%
formatSignif(列=c('speed','dist'),数字=3)
})
谢谢。如果我只希望将大于1000的值转换为指数,我假设我可以编写自己的JS(使用一些if语句?)。是的,我在示例中添加了一个if,以便对大于1000且小于1的数字使用科学符号。这非常完美。谢谢。两个次要的后续问题很好,我喜欢你的答案,并将使用它。是否也可以将scientific的格式设置为1.54 E02,而不是1.5e2(2位小数和两位数指数),然后设置数字格式