【问题标题】:R Shiny RenderDataTable display optionsR Shiny RenderDataTable 显示选项
【发布时间】:2014-09-27 08:47:51
【问题描述】:

所以我有这张使用 ShinyDash 包制作的表格。鉴于记录数量很少,我想删除页码,只显示上一个/下一个。我还想删除左上角的框以选择每页的记录数,并将其默认设置为 5。

这是我当前的代码,尽管最后一行的选项真的很重要:

output$values <- renderDataTable({ 
}
 df <- data.frame(
Period = c("SP15", "FA14", "SU14", "SP14", "FA13", "SP13"),
StartedApps = c(full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP15"],
    full$Cum[full$Day == as.numeric(elapsed) & full$Group == "FA14"],
    full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SU14"],
    full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP14"],
    full$Cum[full$Day == as.numeric(elapsed) & full$Group == "FA13"],
    full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP13"]),
Pct = c("", 
percent(full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP15"]/full$Cum[full$Day == as.numeric(elapsed) & full$Group == "FA14"] - 1),
percent(full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP15"]/full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SU14"] - 1),
percent(full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP15"]/full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP14"] - 1),
percent(full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP15"]/full$Cum[full$Day == as.numeric(elapsed) & full$Group == "FA13"] - 1),
percent(full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP15"]/full$Cum[full$Day == as.numeric(elapsed) & full$Group == "SP13"] - 1)),
CompletedApps = c(fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP15"],
    fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "FA14"],
    fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SU14"],
    fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP14"],
    fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "FA13"],
    fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP13"]),
Pct2 = c("", 
percent(fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP15"]/fullcomp$Cum[fullcomp$Day == as.numeric(elapsed)  & fullcomp$Group == "FA14"] - 1),
percent(fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP15"]/fullcomp$Cum[fullcomp$Day == as.numeric(elapsed)  & fullcomp$Group == "SU14"] - 1),
percent(fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP15"]/fullcomp$Cum[fullcomp$Day == as.numeric(elapsed)  & fullcomp$Group == "SP14"] - 1),
percent(fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP15"]/fullcomp$Cum[fullcomp$Day == as.numeric(elapsed)  & fullcomp$Group == "FA13"] - 1),
percent(fullcomp$Cum[fullcomp$Day == as.numeric(elapsed) & fullcomp$Group == "SP15"]/fullcomp$Cum[fullcomp$Day == as.numeric(elapsed)  & fullcomp$Group == "SP13"] - 1)))

df$Pct <- recode(df$Pct, "'Inf%' = 'NA'")
df$Pct2 <- recode(df$Pct2, "'Inf%' = 'NA'")
df$StartedApps <- as.integer(df$StartedApps)
df$CompletedApps <- as.integer(df$CompletedApps)
names(df) <- c("Period", "Starts", "Pct Change", "Submits", "Pct Change")
df
}, options = list(pagingType = "simple", bFilter = FALSE, aLengthMenu = 5, iDisplayLength = 5)) 

该应用基于 DataTables JavaScript 库 (http://datatables.net/reference/option/) 构建,但我对 JavaScript 的了解还不够,无法弄清楚:( 有什么想法吗?

【问题讨论】:

    标签: javascript r shiny shiny-server


    【解决方案1】:

    您可以使用sPaginationType 选项。在 data.table (1.10) 的最新版本中,pagingType http://datatables.net/reference/option/pagingType 具有更大的灵活性:

    library(shiny)
    runApp(list(
      server = function(input, output, session) {
      output$dt <- renderDataTable({
        data = data.frame(setNames(replicate(15, rnorm(100), simplify = FALSE), letters[1:15]))
        return(data)
      },
      options = 
        list(sPaginationType = "two_button")
      )
    }
    , ui = navbarPage("Foo", id="page", collapsable=TRUE, inverse=FALSE,
                       tabPanel("Bar",
                                dataTableOutput("dt")
                       )
    )
    )
    )
    

    【讨论】:

    • 不幸的是,这个例子只解决了一个问题——每页的记录数下拉菜单和搜索菜单仍然存在。有什么想法吗?
    • 欢迎来到两周前!您可以使用sDomlegacy.datatables.net/release-datatables/examples/advanced_init/… 来操作出现哪些 DOM 元素
    • 在选项中添加 bLengthChange = FALSE 和 bFilter = FALSE 修复了剩下的两个问题。
    【解决方案2】:

    更新,以防有人正在查看:

    library(shiny)
    runApp(list(
      ui = fluidPage(
        DT::dataTableOutput("dt")
      )
      ,
      server = function(input, output, session) {
        data = data.frame(setNames(replicate(15, rnorm(100), simplify = FALSE), letters[1:15]))
    
        output$dt <- DT::renderDataTable({
          DT::datatable(data,
                        options = 
                          list(pagingType = "simple")  
          )
        }
        )
      }
    )
    )
    

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 2014-07-06
      • 2015-09-13
      • 2014-09-05
      • 2019-11-13
      • 2018-08-07
      • 2017-02-22
      • 2016-01-16
      • 2015-01-07
      相关资源
      最近更新 更多