如何在R Shiny中对数据表进行内联编辑

时间:2022-06-05 12:47:47

I am running an R Shiny web-app. I used datatables to show the data. But I want the inline editing of cell of the tables. I am unable to do that. Can any one guide me?

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

Here is my code in

这是我的代码

# 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
  ))

I want to edit cell. Here is the link I want to do the effect:
https://editor.datatables.net/examples/inline-editing/simple.html

我想编辑单元格。以下是我想要发挥作用的链接:https://editor.datatables.net/examples/inline-editing/simple.html

I need something to add in option list maybe but I can not find the right one.

我需要在选项列表中添加一些东西,但我找不到合适的。

1 个解决方案

#1


11  

Apart from DT prototype proposed by @dracodoc, another option is using rhandsontable package.

除了@dracodoc提出的DT原型之外,另一种选择是使用rhandsontable包。

EDIT: according to comments by @hveig and @Munawir, a piece of working example code is now attached (adapted from rhandome examples page):

编辑:根据@hveig和@Munawir的评论,现在附加了一段工作示例代码(改编自rhandome示例页面):

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")
    })
  })
)

#1


11  

Apart from DT prototype proposed by @dracodoc, another option is using rhandsontable package.

除了@dracodoc提出的DT原型之外,另一种选择是使用rhandsontable包。

EDIT: according to comments by @hveig and @Munawir, a piece of working example code is now attached (adapted from rhandome examples page):

编辑:根据@hveig和@Munawir的评论,现在附加了一段工作示例代码(改编自rhandome示例页面):

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")
    })
  })
)