【问题标题】:Are table displayed on shiny,read only?表格是否显示在闪亮的,只读的?
【发布时间】:2017-06-26 00:56:16
【问题描述】:

我正在尝试制作一个用户可以在表格中输入值的应用。

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

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

请给我建议任何更改

提前谢谢你

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    在原生闪亮中,dataTableOutputstableOutputs 始终是只读的。如果您想要更多功能,则必须获得附加包。这是我知道的两个选项。他们都需要一些跑腿。

    1. rhandsontable 允许访问可以从客户端更改的类似EXCEL 的表。通过适当的设置,更改后的表甚至可以在服务器端访问。如需进一步阅读,我建议 Stéphane Laurents 回复 this question
    2. DT 包为您提供了一种在服务器端访问选定行的方法。这可用于实现“删除行”功能。要添加行,您必须自己使用 textInputs、selectInputs 等编写此代码,但这相当简单。

    这两个包都可以通过 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)
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多