相关疑难解决方法(0)

在 DT 中为单列渲染下拉列表

我不精通 Javascript,想复制rhandsontable包中可用的下拉功能,但用于DT包。

如何以最有效的方式实现这一目标?

例子


library(DT)

i <- 1:5

datatable(iris[1:20, ],
          editable = T,
          options = list(
                    columnDefs = list(
                                      list(
                                           targets = 5,
                                           render = JS(
                     # can't get my head around what should be in the renderer...
         )
      ))
    ))
Run Code Online (Sandbox Code Playgroud)

目标是让i变量充当允许输入的验证器DT对象中。

任何帮助深表感谢!

r shiny dt

5
推荐指数
1
解决办法
3191
查看次数

渲染 DT 中单列的下拉列表闪亮但仅在单元格单击时加载并使用 replaceData()

目标

  • 要在 DT 数据表中选择下拉列表,而不是在数据表的构建中,而是在单元格单击上构建,replaceData()并使用 RDBMS (SQL Server) 上的数据。
  • 例如,当我单击 的选定选项时,Ohio我想使用 id 设置我的数据(和 RDBMS)2

问题

  • replaceData()

    • select 的事件是未绑定的。这很奇怪,因为只有我点击的单元格是未绑定的。
    • 所选页面丢失
    • 更新 StateId 有效(但如果我选择另一个原始数据并返回,则无法再次单击)
    • 而且,我认为这是一件积极的事情,选择是在行选择时绘制的
  • 没有 replaceData()

    • 所有事件都已绑定,但我无法更新 DT 数据表中的 StateId
    • 既不在数据中(因此不在 RDMBS SQL 更新中)

还没用

我使用下面的这个技巧在 DT 表中添加复选框。它工作得很好,但是当有大量数据时,它在建筑物中非常慢,因为每个复选框的 html 数量非常重要。

阅读,并受到启发

我使用下面的这个技巧,类似于上一部分,来编写我的代码。但是我尝试仅基于单元格单击来构建,因为我知道上一部分很慢

这是我的代表

预先感谢您的帮助 :)

library(shiny)
library(DT)
library(dplyr)
library(shinyjs)
library(DescTools)
# inspired by /sf/ask/4005092521/#57218361
# 
ui <- fluidPage(
  useShinyjs(),
  tags$head(tags$script(
    HTML("
      Shiny.addCustomMessageHandler('unbindDT', function(id) { …
Run Code Online (Sandbox Code Playgroud)

jquery r datatables shiny dt

5
推荐指数
1
解决办法
743
查看次数

DT:根据 R 闪亮应用程序中另一列的选择输入动态更改列值

我正在尝试创建一个表(使用 DT,请不要使用 rhandsontable),该表几乎没有现有列,一个 selectinput 列(其中每行都有可供选择的选项),最后是另一列,该列将根据用户选择进行填充从每行的 selectinput 下拉列表中。

在我的示例中,“反馈”列是用户下拉选择列。我无法更新“分数”列,该列将基于“反馈”列下拉列表中的选择。

if(interactive()){
  library(DT)
  library(shiny)
  tbl1 <- data.frame(A = c(1:10), B = LETTERS[1:10], C = c(11:20), D = LETTERS[1:10])
  ui <- fluidPage(
    DT::dataTableOutput(outputId = 'my_table')
  )
  server <- function(input, output, session) {
    rv <- reactiveValues(tbl = tbl1)
    observe({
      for (i in 1:nrow(rv$tbl)) {
        rv$tbl$Feedback[i] <- as.character(selectInput(paste0("sel", i), "",
                                                       choices = c(1,2,3,4)
        ))
        
        if(!is.null(input[[paste0("sel", i)]])) {
          if(input[[paste0("sel", i)]] == 1) {
            rv$tbl$Score[i] <- 10
          } else if(input[[paste0("sel", i)]] == 2) {
            rv$tbl$Score[i] <- 20
          } …
Run Code Online (Sandbox Code Playgroud)

r datatables reactive-programming shiny dt

4
推荐指数
1
解决办法
1612
查看次数

使用 R 中的 DataTables DT 制作一个更美观的下拉过滤器标签

我正在尝试为闪亮的仪表板制作一个数据表,该仪表板将在列上有一个下拉过滤器。我实际上可以使用它,但外观我称之为低于标准。

这是我的简单例子

library(DT)
mytable <- data.frame(Col1 = as.factor(LETTERS[1:3]))
datatable(mytable, filter = "top")
Run Code Online (Sandbox Code Playgroud)

当我激活下拉菜单时,过滤器文本输入看起来不错:

在此输入图像描述

然而,当我点击离开时,它看起来并不那么好:

在此输入图像描述

有没有什么方法可以保留那个漂亮的 A 和一个气泡中的 x(抱歉,我确信有一个更好的术语),或者至少去掉括号和引号?我知道,如果列值是字符而不是因子,我可以获得更好看的文本输入,但是它们我失去了下拉功能(与这个问题Factor dropdown filter in DT::datatable in闪亮仪表板不起作用),这我需要。

mytable <- data.frame(Col1 = LETTERS[1:3], stringsAsFactors = FALSE)
datatable(mytable, filter = "top")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我对像这篇文章Edit datatable in Shiny with dropdown select for Factor Variables 中的单元格下拉菜单感到满意,但我需要过滤表格,而不是编辑它。

版本信息:

R版本3.5.3

DT_0.20

r datatables dt

2
推荐指数
1
解决办法
2671
查看次数

标签 统计

dt ×4

r ×4

datatables ×3

shiny ×3

jquery ×1

reactive-programming ×1