如何在 R Shiny 中实现对数据表的内联编辑

Posted

技术标签:

【中文标题】如何在 R Shiny 中实现对数据表的内联编辑【英文标题】:How to implement inline editing on datatables in R Shiny 【发布时间】:2015-02-22 13:45:56 【问题描述】:

我正在运行一个 R Shiny 网络应用程序。我使用数据表来显示数据。但我想要表格单元格的内联编辑。我无法做到这一点。谁能指导我?

这是我的代码

# UI.R

fluidRow(
         column(4,dataTableOutput("numericalBin")),
         column(8,h1("numericalBin_Chart")))
)

# Server.R

output$numericalBin <- renderDataTable(
    mtcars
  ,options = list(    
    lengthChange=FALSE,
    searching=FALSE,
    autoWidth=TRUE,
    paging=FALSE
  ))

我想编辑单元格。这里是我想做效果的链接:https://editor.datatables.net/examples/inline-editing/simple.html

我可能需要在选项列表中添加一些内容,但我找不到合适的。

【问题讨论】:

这个确实很有趣,我想听听其他人会怎么做。但是现在我会去使用 shinyBS 库及其通过 bsModal 的模态来链接将弹出并执行您想要的操作的依赖项... 有DT的编辑器原型here 【参考方案1】:

除了@dracodoc 提出的DT 原型,另一个选择是使用rhandsontable package。

编辑:根据@hveig 和@Munawir 的cmets,现在附上了一段工作示例代码(改编自rhandome examples page):

library(shiny)
library(rhandsontable)

shinyApp(
  shinyUI(
    fluidRow(
      rHandsontableOutput("hot")
    )),

  shinyServer(function(input, output, session) 
    values = reactiveValues()

    data = reactive(
      if (!is.null(input$hot)) 
        DF = hot_to_r(input$hot)
       else 
        if (is.null(values[["DF"]]))
          DF = mtcars
        else
          DF = values[["DF"]]
      


      values[["DF"]] = DF
      DF
    )

    output$hot <- renderRHandsontable(
      DF = data()
      if (!is.null(DF))
        rhandsontable(DF, stretchH = "all")
    )
  )
)

【讨论】:

以上是关于如何在 R Shiny 中实现对数据表的内联编辑的主要内容,如果未能解决你的问题,请参考以下文章

如何在富编辑控件中实现对 URL 的鼠标单击

如何在 Postgresql 中实现对复杂嵌套 JSONB 的全文搜索

如何在Shiny R中丢弃DT :: datatable上的用户编辑

使用 D3 和 Shiny 在 R 中实现 `identify()`

运行 R Shiny 应用程序时如何在数据表函数中编辑列名?

如何在hibernate中实现对两个表的查询数据?