表格是否有光泽,只读?

时间:2017-06-26 00:56:16

标签: r shiny

我正在尝试创建一个用户可以在表格中输入值的应用程序。

所以我使用data.frame命令创建了一个表,并使用常规闪亮的ui和服务器代码在应用程序的HTML上绘制了表格。

我面临的问题是表格是“只读”格式,我不知道如何从闪亮的HTML页面上绘制的这样的表中读取值。

请建议我进行任何更改

提前谢谢

1 个答案:

答案 0 :(得分:1)

在原生闪亮中,dataTableOutputs以及tableOutputs始终是只读的。如果您想要更多功能,则必须获得其他软件包。以下是我所知道的两个选项。他们俩都需要一些腿部工作。

  1. rhandsontable可以访问可以从客户端更改的类似EXCEL的表。通过适当的设置,甚至可以在服务器端访问更改的表。如需进一步阅读,我建议StéphaneLaurents回答this question
  2. DT为您提供了一种访问服务器端选定行的方法。这可用于实现“删除行”功能。要添加行,您必须使用textInput s,selectInput等自行编写,但这很简单。
  3. 这两个软件包都可以通过CRAN和GitHub获得。

    我个人更喜欢选项2,因为在大多数情况下,添加行/删除行界面可以更加节省。如果您为用户提供了在桌面上填写他们想要的任何内容,那么服务器就不会满意。

    这是展示第二种方法的最小例子

    library(DT)
    library(shiny)
    
    ui = fluidPage(
      actionButton("delete_rows", "Delete selected rows"),
      DT::dataTableOutput("mytable")
    )
    
    server = function(input, output, session){
      serverTable = reactiveVal(mtcars)
    
      output$mytable = DT::renderDataTable({
        serverTable()
      })
    
      observeEvent(input$delete_rows, {
        serverTable(serverTable()[-input$mytable_rows_selected,])
      })
    }
    
    shinyApp(ui,server)