标签: dt

闪亮和R中的DT:自定义数字格式

我有一个使用DT-package 显示数据表的闪亮应用程序.我想要的是能够以自定义方式格式化列.例如,我想要一个货币值显示如下:1,234.50€而不是-way DT,它显示它像$ 1,234.5(注意符号的变化,货币符号的位置以及小数点后的数字-点).

MWE看起来像这样:

library(shiny)
library(DT)

shinyApp(
  # UI
  ui = fluidPage(DT::dataTableOutput('tbl')),

  # SERVER
  server = function(input, output) {
    dat <- data.frame(cur = 1234.5, # supposed to be displayed as: 1,234.50€ | Bad! 
                                         # displayed as $1,234.5
                      perc = 0.123456, # 12.34% | Good!
                      num = 1000) # 1,000 | Bad! displayed as 1000

    # render DT
    output$tbl = DT::renderDataTable(
      datatable(dat) %>%
        formatCurrency(c('cur'), "$") %>%
        formatPercentage('perc', 2) %>%
        formatRound('num', digits = 0)
    )
  }
)
Run Code Online (Sandbox Code Playgroud)

但它做得相当不错,当将货币符号更改为时 …

r shiny dt

8
推荐指数
1
解决办法
7524
查看次数

在保持位置的同时更新Shiny DataTable的行

我正在创建一个Shiny应用程序,它在屏幕顶部显示data.frame信息,在底部显示特定的变量统计信息.用户可以通过与DT::datatable对象交互来导航data.frame列.

当用户点击变量时,会显示可以编辑的详细信息.我希望这些信息能够更新并反映在数据表中.我的问题是,当我更新表时,它会从一开始就呈现并显示.如何在编辑后保留数据表的页面和行选择?

这是一个最小的工作示例,显示了a中的mtcars数据集DT::datatable.我有一些控制更新字段.请注意,数据表重新渲染回第一页.

library(shiny)

runApp(shinyApp(

  ui = fluidPage(
    title = "minimal-working-example",
    fluidRow(
      column(3, inputPanel(
        selectInput("field", "Field", choices = names(mtcars)),
        numericInput("value", "Value", 0),
        actionButton("submit", "Submit")
      )),

      column(9,
        DT::dataTableOutput("table")
      )
    )
  ),

  server = function(input, output) {

    v <- reactiveValues(mtcars=mtcars)

    observeEvent(input$submit, {
      v$mtcars[input$field] <- input$value
    })

    output$table <- DT::renderDataTable({
      DT::datatable(
        v$mtcars,
        selection = "single",
        options = list(pageLength = 5))
    })
  }
))
Run Code Online (Sandbox Code Playgroud)

会话信息:

Session info --------------------------
 setting  value                       
 version  R version 3.3.0 (2016-05-03)
 system   x86_64, mingw32             
 ui …
Run Code Online (Sandbox Code Playgroud)

r shiny dt

8
推荐指数
1
解决办法
2963
查看次数

如何减少DT数据表中的行高

我希望能够在渲染数据表时获得"更细"的行DT(即减小该高度)

options(digits.secs=6)
library(data.table)
d = data.table(x = 1:10,time = as.POSIXct('2015-03-23 12:00:00.123'))
library(DT)
datatable(d)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r shiny dt

8
推荐指数
1
解决办法
3878
查看次数

禁用R Plotly单击事件的视觉响应

我正在用plot_ly散点图构建一个闪亮的应用程序.我正在使用一个SharedData对象(来自串扰包)在绘图和a datatable(来自DT)之间共享信息.

问题是当您单击绘图中的某个点时,它会使所有其他点的颜色变暗,并为所选点的图例添加一个条目,一旦发生这种情况,似乎没有办法撤消它.我想禁用这些视觉更改,但仍能检测到点击次数.

如果我只是在调用的数据参数中使用被动data.frame而不是SharedData对象plot_ly,但是event_data从图中没有足够的信息来选择行中的行,则不会发生此问题datatable.(点xy点坐标是浮点数字,因此坐标与数据匹配可能会产生意外结果.)

这是一个演示使用mtcars:

library(shiny)
library(DT)
library(plotly)
library(data.table)
library(crosstalk)

### UI function ---------
ui <- fluidPage(
  fluidRow(
    plotlyOutput('my_graph', height = '400px')
  ),
  fluidRow(
    dataTableOutput('my_table')
  )
)

### Server function -------
server <- function(input, output, session) {

### SharedData object ----
  filtered_data <- reactive({
    data.table(mtcars, keep.rownames = TRUE)
  }) 

  shared_data <- reactive({
    req(filtered_data())
    SharedData$new(filtered_data(), ~rn)
  })

### my_graph ---- …
Run Code Online (Sandbox Code Playgroud)

r shiny plotly dt

8
推荐指数
1
解决办法
401
查看次数

DT 中的复选框闪亮

我正在尝试将复选框放入 DT 表并收集有关已选中行的信息。
我的代码如下

shinyApp(
  ui = fluidPage(
    fluidRow(
      verbatimTextOutput("value1"),
      column(12,
             DT::dataTableOutput('table'),  tags$script(HTML('$(document).on("click", "input", function () {
                       var checkboxes = document.getElementsByName("selected");
                       var checkboxesChecked = [];
                       for (var i=0; i<checkboxes.length; i++) {
                       if (checkboxes[i].checked) {
                       checkboxesChecked.push(checkboxes[i].value);
                      }
                      }
                     Shiny.onInputChange("checked_rows",checkboxesChecked);  })'))
      ))),
  server = function(input, output) {
    library(DT)
    library(glue)
    output$value1 <- renderPrint({ input$checked_rows }) 

    output$table <- DT::renderDataTable({
      iris$checked<-''
      iris$checked[2:5]<-'checked=\"checked\"'
      iris[["Select"]]<-glue::glue('<input type="checkbox" name="selected" {iris$checked} value="{1:nrow(iris)}"><br>')
      datatable(iris,escape=F,rownames=F,  class = 'cell-border compact', 
                options=list(ordering=T,autowidth=F,scrollX = TRUE,
                columnDefs = list(list(className = 'dt-center', targets = "_all"))
                ),
                selection="none" …
Run Code Online (Sandbox Code Playgroud)

checkbox r shiny dt

8
推荐指数
1
解决办法
6493
查看次数

R Shiny DT - 用表格编辑表中的值

是否可以通过编辑DT :: DataTable来更新被动数据源?下面的代码是基于这个代码的变化,x被激活了.尝试在observeEvent中更改x时,问题就开始了.

有x反应的目的是我打算从外部数据库中获取它,然后编辑DT :: DataTable写回数据库,以便它与用户看到的内容保持同步(我很好那 - 它不是问题的一部分).

library(shiny)
library(DT)
shinyApp(
  ui = fluidPage(
    DTOutput('x1')
  ),
  server = function(input, output, session) {
    x = reactive({
      df <- iris
      df$Date = Sys.time() + seq_len(nrow(df))
      df
    })
    output$x1 = renderDT(x(), selection = 'none', editable = TRUE)

    proxy = dataTableProxy('x1')

    observeEvent(input$x1_cell_edit, {
      info = input$x1_cell_edit
      str(info)
      i = info$row
      j = info$col
      v = info$value

      # problem starts here
      x()[i, j] <<- isolate(DT::coerceValue(v, x()[i, j])) 
      replaceData(proxy, x(), resetPaging = FALSE)  # …
Run Code Online (Sandbox Code Playgroud)

r shiny dt

8
推荐指数
2
解决办法
3757
查看次数

带有客户端处理(服务器 = F)的 Shiny 应用程序中的 DT 编辑抛出 JSON 错误

我有一个 Shiny Server 应用程序,用户可以在其中编辑数据表,然后相应地更新一些反应性摘要统计信息。我在一个相当慢的框架上托管这个应用程序,这就是为什么我想使用客户端处理进行 DT 渲染,即server = F传递给DT::renderDataTable. 让我分解我的问题的要点:

  • 代码在server = T通过时完全可操作。

  • 当传递 时server = F,当用户在 DT 中编辑单元格时,浏览器会抛出以下错误消息:

DataTables 警告:table id=DataTables_Table_5 - JSON 响应无效。有关此错误的更多信息,请参阅 http://datatables.net/tn/1

有趣的是,当这个错误窗口被关闭时,依赖摘要统计信息会根据编辑正确更新,并且 Shiny 应用程序继续。因此,除错误外,一切正常。我应该注意到,我访问了错误中提到的网站,但没有变得更聪明。

下面可重现的例子:

library(shiny)
library(DT)

dt = data.frame(V1 = c(1,2), V2 = c(3,4))

server <- function(input, output, session) {

val = reactiveValues(mat = data.table(dt))

output$testDT = renderDataTable({
            DT::datatable(val$mat, editable = TRUE)
}, server = FALSE)

proxy = dataTableProxy('testDT')

observeEvent(input$testDT_cell_edit, {

  info = input$testDT_cell_edit

  str(info) …
Run Code Online (Sandbox Code Playgroud)

json r shiny shiny-server dt

8
推荐指数
1
解决办法
875
查看次数

有人可以解释 DT::dataTableProxy 是如何工作的吗?

我一直在努力尝试掌握如何使 DT::dataTableProxy在我的应用程序中使用 DT in Shiny工作,但我无法通过返回所选列。

按照此处的示例,我尝试修改代码以打印描述性统计数据(使用pastecs)。但唯一呈现的是所选的文字列。

#modified UI, adding another verbatimTextOutput

ui = 
...
verbatimTextOutput('foo2')

server = 
...
  output$foo2= renderPrint({
    x<-input$foo_columns_selected
    stat.desc(x)
  })

Run Code Online (Sandbox Code Playgroud)

结果:ShinyApp 的图片

我想做的是获取所选列的值,然后运行该函数stat.desc。在上面的示例中,它将在第 2 列 (Sepal.Width) 上运行,并呈现描述性统计数据。像这样:

控制台命令和所需的反应输出

展望未来,我希望对stat.desc来自多个 selectInput 的渲染数据表执行操作。但是..一次一步。我想首先了解如何获取实际值来执行功能。

更新!

所以,我想我知道如何成功地完成我需要的事情。如果其他用户可以验证它是否正常工作,我会很高兴:

更新的脚本:

require(DT)
library(dplyr)
library(tibble)

ui<-
  fluidPage(

    selectInput('obj','Choose Name:', choices = c('',my.data$Name), selectize = TRUE),
    dateRangeInput('daterange',"Date range:",
                   start= min(my.data$Date),
                   end = max(my.data$Date)),

    mainPanel(
      dataTableOutput('filteredTable'),
      dataTableOutput('filteredTable2'),
      tableOutput('table')
    )
)

server<-function(input,output, session){



  filteredTable_data <- reactive({

    my.data %>% rownames_to_column() %>% …
Run Code Online (Sandbox Code Playgroud)

r shiny dt

8
推荐指数
0
解决办法
4127
查看次数

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

我正在处理超过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
查看次数

闪亮:在非活动tabPanel上更新DT

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)

javascript jquery r shiny dt

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

标签 统计

dt ×10

r ×10

shiny ×10

checkbox ×1

javascript ×1

jquery ×1

json ×1

plotly ×1

shiny-server ×1