假设我的数据如下所示:
df1 = data.frame(A=c(1000000.51,5000.33), B=c(0.565,0.794))
Run Code Online (Sandbox Code Playgroud)
我想使用DataTables并且列A是(1,000,001; 5,000)
library(DT)
datatable(df1) %>% formatPercentage('B', 2) %>%
formatRound('A',digits = 0)
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用秤
library(scales)
comma_format()(1000000)
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将其与DataTables结合起来
谢谢!
我试图在R Markdown ioslides中嵌入数据表.但是对于超过8 col的表,它将无法放入一页内.是否在r chuck中重新调整尺寸以适应ioslide?我试图在选项中使用宽度,但似乎没有效果.
## Example table, use another data wider tan iris
```{r, message=FALSE, warning=FALSE, echo=FALSE}
library(DT)
datatable(iris, options=list(pageLength = 5))
```
Run Code Online (Sandbox Code Playgroud)
以上代码仅供参考,不再重现.在某些用例中,数据表比屏幕宽,并希望能够重新调整大小以适合一张幻灯片.谢谢.
我很确定我的问题已经有了答案,但无论我搜索多么努力,我都找不到任何可以解决这个问题的解决方案.因此,如果这被认为是微不足道的,请不要拍.
现在问题在于:
假设我们使用Shiny渲染dataTable,当我将鼠标悬停在单元格上并从底层数据集动态输出时,我想获取每个单元格的id(rowID + columnID).我知道已有鼠标悬停的解决方案,例如shinyBS或此示例:
#server.R:
shinyServer(function(input, output) {
dat <- list(iris,cars)
output$tabset <- renderUI({
tabs <- list()
for(i in c(1,2)){
id <- paste("id",i, sep="")
tabs[[i]] <- tabPanel(title=id,DT::dataTableOutput(outputId=id)) #dynamic panels
}
do.call(tabsetPanel,c(tabs, id='Panel'))
})
lapply(1:2,function(i){
id <- paste("id",i, sep="")
output[[id]] <- DT::renderDataTable({
dat[[i]]},
extensions = c('Scroller'),
options=list(deferRender=TRUE, dom='T<"clear">fitrS', scrollY=540, searchHighlight = TRUE,
scrollCollapse=TRUE, autoWidth = TRUE,
columnDefs = list(list(width = '60%', targets = '_all',
render = JS("function(data, type, row, meta) {",
"return type === 'display' && data.length > 5 ?", …Run Code Online (Sandbox Code Playgroud) 我正在处理超过10万行的表并使用DT包(开发版本0.1.56)在Shiny App 中将其可视化.
此外,我使用DTExtensions作为:Buttons,以不同的格式下载数据.然而,虽然Scroller扩展也被激活,但我只能下载几行(不是所有数据).
示例代码:
library("shiny")
library("DT")
shinyApp(
ui = fluidPage(DT::dataTableOutput('tbl')),
server = function(input, output) {
output$tbl = DT::renderDataTable(
iris,extensions=c("Buttons",'Scroller'),options = list(dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),scrollY = 50,
scroller = TRUE
))
}
)
Run Code Online (Sandbox Code Playgroud)
另外如果我只运行R中的这部分代码并在查看器中获取数据表,我能够复制所有行,甚至可能如何?
library("DT")
datatable(
iris,
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
)
)
Run Code Online (Sandbox Code Playgroud)
我尝试过不同的方法:
scrollY =在选项列表中更改... - >它正在工作,但scrollY实际显示所有数据行的数量必须很大,因此可以完全下载 …
在列上创建datatablewith filter = 'top'并使用格式化功能时,格式不会应用于该列的过滤器控件.有没有办法格式化过滤器控件?
例如,如果我将浮点数设置为百分比格式,则过滤器中的滑块仍显示浮点数.
library(DT)
my_data <- mtcars
my_data$wt_pctile <- trunc(rank(my_data$wt)) / length(my_data$wt)
datatable(my_data,
filter = 'top') %>%
formatPercentage('wt_pctile')
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 Shiny 创建一个表,用户可以在其中单击一行以查看有关该行的更多信息。我以为我明白如何做到这一点(见附上的代码)。
但是,现在只要用户单击“getQueue”操作按钮,observeEvent(input$fileList_cell_clicked, {}) 似乎就会被调用。为什么会在用户有机会单击一行之前调用它?生成表的时候也调用吗?有没有办法解决?
我需要用代码替换“output$devel <- renderText("cell_clicked_Called")”,如果没有实际的单元格可以引用,这些代码会出现各种错误。
感谢您的任何建议!
ui <- fluidPage(
actionButton("getQueue", "Get list of queued files"),
verbatimTextOutput("devel"),
DT::dataTableOutput("fileList")
)
shinyServer <- function(input, output) {
observeEvent(input$getQueue, {
#get list of excel files
toTable <<- data.frame("queueFiles" = list.files("queue/", pattern = "*.xlsx")) #need to catch if there are no files in queue
output$fileList <- DT::renderDataTable({
toTable
}, selection = 'single') #, selection = list(mode = 'single', selected = as.character(1))
})
observeEvent(input$fileList_cell_clicked, {
output$devel <- renderText("cell_clicked_called")
})}
shinyApp(ui = ui, server …Run Code Online (Sandbox Code Playgroud) 我有一个数据表,其日期列显示UTC时区.使用DT的最后一个开发版本,可以选择将日期列转换为语言环境字符串,一切都在闪亮的webapp中很好地显示.但是,如果用户将通过按钮扩展名下载表,则日期列将以UTC时区(并且格式不可读)导出
library(DT)
library(shiny)
df <- data.frame(a = 1:100, b = 1:100,
d=seq(as.POSIXct("2017-08-23 10:00:00"), as.POSIXct("2017-11-30 10:00:00"), by = "days"))
ui <- fluidPage(
dataTableOutput("table")
)
server <- function(input, output){
output$table <- DT::renderDataTable({
datatable(df,
extensions = c("Buttons"),
options = list(dom = 'Bfrtip',
buttons = list("csv",list(extend='excel',filename="DF"))
)) %>% formatDate(3, "toLocaleString", params = list('fr-FR'))
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
因此,如果本地操作系统时区是+5,它将显示"23/08/2017 à 10:00:00"在一个闪亮的webapp,但"2017-08-23T05:00:00Z"在excel文件中.有什么方法可以格式化出口吗?
TL; DR:如何在非活动选项卡上强制绘制数据表但其输入更改?
有一个闪亮的应用程序看起来像这样:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
sidebarLayout(
sidebarPanel(
numericInput(
inputId = "random_val",
label = "pick random value",
value = 1
)
),
mainPanel(
tabsetPanel(
id = "tabset",
tabPanel(
title = "some_other_tab",
"Some other stuff"
),
tabPanel(
title = "test_render",
textOutput("echo_test"),
DTOutput("dt_test")
)
)
)
)
),
server = function(input, output) {
output$echo_test <- renderText({
cat("renderText called \n")
input$random_val
})
outputOptions(output, "echo_test", suspendWhenHidden = FALSE)
output$dt_test <- renderDT({
cat("renderDT called \n")
df <- data.frame(
a = 1:10^6,
b …Run Code Online (Sandbox Code Playgroud) 我有一个反应数据框如下:
Apr 2017 May 2017 Jun 2017 Jul 2017 Aug 2017 Sep 2017
zz 0.1937571 0.1840005 0.1807256 0.1959589 0.2039463 0.2016886
aa 0.3518203 0.3634578 0.3670747 0.3676495 0.3680581 0.3657724
bb 0.10651308 0.11548379 0.11572389 0.11272168 0.11361587 0.11503638
cc 0.2481513 0.2579199 0.2623222 0.2673914 0.2579430 0.2550686
dd 0.06641069 0.06741159 0.07305105 0.07373854 0.07043972 0.07304338
Run Code Online (Sandbox Code Playgroud)
我想样式基于价值全表(与此类似,EG3).以下是我的代码:
brks <- reactive({
quantile(intrc_pattern_re(), probs = seq(0, 1, 0.25), na.rm = TRUE)
})
clrs <- reactive({
round(seq(255, 40, length.out = length(brks()) + 1), 0) %>%
paste0("rgb(255,", ., ",", ., …Run Code Online (Sandbox Code Playgroud) 我正在尝试向我的 Shiny 应用程序添加“保存输入”功能,其中保存的输入将保存在 DT 数据表中。如果用户单击“添加”按钮,则输入将附加到数据表中。然后,用户可以通过选择一行并单击“删除”按钮从该数据表中删除一行。我还需要将此表的值保存为全局变量,以便它在所有会话中保持持久性。
示例代码如下所示。当我关闭会话时,表 ( this_table) 会正确更新,但是,这些更改不会在应用程序期间实时显示。我试过将这两个输入按钮放在一个eventReactive函数中,但是当其中一个按钮被多次选择时,这不起作用。
有任何想法吗?
全局表:
this_table = data.frame(bins = c(30, 50), cb = c(T, F))
闪亮的应用程序代码:
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30),
checkboxInput("cb", "T/F"),
actionButton("add_btn", "Add"),
actionButton("delete_btn", "Delete")
),
mainPanel(
DTOutput("shiny_table")
)
)
)
server <- function(input, output) {
observeEvent(input$add_btn, {
t = rbind(data.frame(bins = input$bins,
cb = input$cb), this_table)
this_table <<- t
})
observeEvent(input$delete_btn, …Run Code Online (Sandbox Code Playgroud) dt ×10
r ×10
shiny ×7
javascript ×2
datatables ×1
format ×1
formatting ×1
jquery ×1
r-markdown ×1