标签: dt

在数据表(R)中每三位数字添加逗号

假设我的数据如下所示:

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结合起来

谢谢!

format r number-formatting dt

7
推荐指数
1
解决办法
6669
查看次数

使用Shiny(R)将动态鼠标悬停添加到DataTable中列中的所有条目

我很确定我的问题已经有了答案,但无论我搜索多么努力,我都找不到任何可以解决这个问题的解决方案.因此,如果这被认为是微不足道的,请不要拍.

现在问题在于:

假设我们使用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)

javascript r shiny dt

7
推荐指数
0
解决办法
544
查看次数

按钮:带滚动条的下载按钮仅下载几行

我正在处理超过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)

我尝试过不同的方法:

  1. scrollY =在选项列表中更改... - >它正在工作,但scrollY实际显示所有数据行的数量必须很大,因此可以完全下载 …

r shiny dt

7
推荐指数
2
解决办法
2078
查看次数

R垂直滚动不起作用

我试图得到一个垂直卷轴,但这不起作用,任何人都可以解释为什么?我还想默认一次显示20行.

谢谢


title: "Untitled"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
---

```{r setup, include=FALSE}
library(flexdashboard)
library(DT)
```

Column {data-width=650}
-----------------------------------------------------------------------

### Chart A

```{r}
datatable(cars ,options = list(c(bPaginate = F, scrollY=T)),  filter = 'top')
```
Run Code Online (Sandbox Code Playgroud)

dt flexdashboard

7
推荐指数
1
解决办法
3821
查看次数

Shiny DT:excel中的格式日期列,通过按钮扩展名

我有一个数据表,其日期列显示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文件中.有什么方法可以格式化出口吗?

r shiny dt

7
推荐指数
1
解决办法
852
查看次数

在 Shiny 中限制 DT 表中的行选择

我目前正在尝试将 Shiny 中的数据表中的选择限制为仅两行 - 我希望该表不允许用户单击多于行(但也能够在之后取消选择它们)。

library(DT)
shinyApp(
  ui = fluidPage(
    fluidRow(
      column(12,
             dataTableOutput('table')
      )
    )
  ),
  server = function(input, output) {
    output$table <- DT::renderDataTable(iris, 
                                    options = list(selection = "multiple")
    )
  }
)
Run Code Online (Sandbox Code Playgroud)

行选择当前处于多重模式,该模式有效,但我不希望选择超过两行。

r shiny dt

6
推荐指数
1
解决办法
4269
查看次数

将 Sparkline htmlwidget 包含在 Shiny 应用程序的数据表单元格中,而无需诉诸(太多)JavaScript

我正在使用该sparkline包生成条形图,并将其放入datatableShiny 应用程序中的单元格中。我已经设法在独立中产生所需的输出datatable,但是当我将其放入 Shiny 应用程序中时,它不起作用。spk_add_deps()这可能与如何识别 htmlwidgets有关。我尝试过spk_add_deps()多次移动该函数并向其传递各种标识符,但没有任何效果。

我确实在这里发现了本质上相同的问题Render datatable with Sparklines in Shiny 但给定的解决方案 (1) 依赖于在回调函数中为迷你图编写 JavaScript 代码(违背了使用 R 函数的目的sparkline())和 (2) 似乎如果迷你图在查看器中呈现,那么我们离让它们在 Shiny 应用程序中呈现而无需编写所有 JavaScript 就不远了。

这是演示:

# Preliminary, load packages and build a demo table with the sparkline code merged in
library(shiny)
library(DT)
library(data.table)
library(sparkline)

## Create demo data sets
my_mtcars <- data.table(mtcars, keep.rownames = TRUE)
names(my_mtcars)[1] <- 'car_id'

set.seed(0)
data_for_sparklines <- data.table(car_id = rep(my_mtcars$car_id, 5),
                                  category = …
Run Code Online (Sandbox Code Playgroud)

r sparklines shiny dt htmlwidgets

6
推荐指数
1
解决办法
2571
查看次数

在 DT::datatable() 中显示 Inf

我想明确显示数据表Inf中的值而不是空白

iris[1, 1] <- Inf
DT::datatable(iris[1:2, ])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我不想转动列信息字符以便能够对列进行排序(如果我这样做,排序将按字母顺序排列)

有任何想法吗?


编辑:

我认为可以采用这种代码:

datatable(iris[c(1:20), ], options = list(columnDefs = list(list(
  targets = 5,
  render = JS(
    "function(data, type, row, meta) {",
    "return type === 'display' && data.length > 2 ?",
    "'<span title=\"' + data + '\">' + data.substr(0, 2) + '...</span>' : data;",
    "}")
))))
Run Code Online (Sandbox Code Playgroud)

使用@MLavoie解决方案,它没有区别NA并且Inf

df = iris
df[1,1]<-Inf
df[2,1]<-NA
DT::datatable(df)
library(DT)
DT::datatable(df[,], options = list(columnDefs = list(list(
  targets = 1,
  render = JS(
    "function(data, …
Run Code Online (Sandbox Code Playgroud)

datatable r shiny dt

6
推荐指数
1
解决办法
1355
查看次数

在 bookdown 中交叉引用 DT::datatable

DT::datatable我正在尝试在 bookdown 项目中创建一个引用。

书籍手册规定(\#tab:label)应将其放置在表格标题的开头。_output.yml为了进行测试,我在 R-studio 中创建了一个新的 bookdown 项目,但用以下配置替换了内容html_book(我只对 HTML 输出感兴趣)。

bookdown::html_book:
    toc: yes
    theme: null
    highlight: pygments
    split_by: none
Run Code Online (Sandbox Code Playgroud)

然后我在 的底部添加了以下代码01-intro.Rmd

```{r irisTab}
DT::datatable(iris, caption = '(\\#tab:irisTab) Iris table')
```

See Table \@ref(tab:irisTab).
Run Code Online (Sandbox Code Playgroud)

我的期望是,它将(\\#tab:irisTab)被替换Table 2.2或至少被替换2.2,并且下面的参考将是2.2。然而,这是行不通的。标签保持逐字不变,参考文献为??

我能得到的最接近的结果是将标题文本放在表格之前。

Table (\#tab:irisTab): Iris table

```{r irisTab}
DT::datatable(iris)
```

See Table \@ref(tab:irisTab).
Run Code Online (Sandbox Code Playgroud)

在这种情况下,引用有效,但标签(\#tab:irisTab)在输出中仍然逐字保留,即它没有按2.2预期替换。

有没有办法创建一个带有标题并且可以引用的DT表?

更新 1:@mikey-harper 建议使用fig.cap. 但是,fig.cap仅更新 …

knitr r-markdown dt bookdown

6
推荐指数
1
解决办法
1148
查看次数

在闪亮的应用程序中动态创建可编辑的DT

我想创建一个具有以下流程的应用程序:

  1. 用户选择一些数据组
  2. 这些组成为动态选项卡,每个选项卡都包含可使用相应组进行编辑的子集 DT
  3. 每个选项卡都包含一个额外的反应DT,它对 #2 中创建的可编辑 DataTable 中的更改做出反应(在下面的示例中,只需将数字列乘以 2)

这是执行 #1 和 #2 的示例。但是,#3 不起作用,因为通常通过可编辑公开的信息DT不会出现在 my 中input,可能是由于某些范围或渲染顺序问题。

library(shiny)
library(DT)
library(dplyr)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel = 
      sidebarPanel(
        selectInput("cars", "Pick a vehicle", rownames(mtcars), multiple = T),
        actionButton("add", "Create Tabs")
      ),
    mainPanel = 
      mainPanel(
        tabsetPanel(
          id = "panel"
        )
      )
  )
)

server <- function(input, output, session) {
  
  df <- tibble::rownames_to_column(mtcars, "car")
  data <- reactiveVal()
  observe({
    req(df, input$cars)
    # Step 1) split data by …
Run Code Online (Sandbox Code Playgroud)

r shiny dt reactive

6
推荐指数
2
解决办法
365
查看次数