如何使用DT包在R Shiny中编辑具有给定下拉列表的表中的单元格值?

问题描述 投票:0回答:1

我读了一个csv文件,将其作为应用程序中的一个表,对于某一列,我想不时地更新单元格值,我想通过提供一个下拉列表供用户选择时间来控制该值他们需要更新值,我正在使用程序包,这非常好,但是似乎此功能不容易拥有,我在网上搜索了很多内容,却没有找到出路,请帮忙,可以看到这个吗?

“截图”

谢谢。

r datatable shiny dropdown dt
1个回答
0
投票

我有一个带有按钮的解决方案,但下拉菜单只能解决一半:

enter image description here

我可以显示下拉菜单,但不能选择下拉菜单。我已将其包含在内,以防其他人可以完成它。

library(shiny)
library(DT)


shinyApp(

    #UI
    ui <- fluidPage(

        DT::dataTableOutput('my_datatable'),

    ),

    #Server
    server <- function(input, output, session) {

        #Function to create buttons
        shinyInput <- function(FUN, len, id, ...) {

            inputs <- character(len)
            for (i in seq_len(len)) {
                inputs[i] <- as.character(FUN(paste0(id, i), ...))
            }
            inputs

        }

        #Add buttons to the mtcars dataframe
        mtcars_btn <- reactiveValues(

            data = data.frame(

                mtcars[, 1:2],
                btn_delete = shinyInput(actionButton, nrow(mtcars), 'button_', label = "Delete", onclick = 'Shiny.setInputValue(\"btn_delete_click\", this.id, {priority: "event"})'),
                btn_review = shinyInput(actionButton, nrow(mtcars), 'button_', label = "Review", onclick = 'Shiny.setInputValue(\"btn_review_click\", this.id, {priority: "event"})'),
                btn_keep   = shinyInput(actionButton, nrow(mtcars), 'button_', label = "Keep",   onclick = 'Shiny.setInputValue(\"btn_keep_click\",   this.id, {priority: "event"})'),
                drp_select = shinyInput(selectInput,  nrow(mtcars), 'button_', label = "", width = 100, choices = c("Keep", "Delete", "Review")),# onChange = ''),
                reportfinalrule = 'Keep',
                stringsAsFactors = FALSE

            )

        )

        #Output datatable
        output$my_datatable <- DT::renderDataTable(

            DT::datatable(mtcars_btn$data, escape = FALSE, selection = 'none', options = list(searching = FALSE, ordering  = FALSE))

        )

        #Observe delete button being clicked
        observeEvent(input$btn_delete_click, {

            mtcars_btn$data[as.numeric(strsplit(input$btn_delete_click, "_")[[1]][2]),]$reportfinalrule <- 'Delete'

        })

        #Observe review button being clicked
        observeEvent(input$btn_review_click, {

            mtcars_btn$data[as.numeric(strsplit(input$btn_review_click, "_")[[1]][2]),]$reportfinalrule <- 'Review'

        })

        #Observe keep button being clicked
        observeEvent(input$btn_keep_click, {

            mtcars_btn$data[as.numeric(strsplit(input$btn_keep_click, "_")[[1]][2]),]$reportfinalrule <- 'Keep'

        })

    }

)
© www.soinside.com 2019 - 2024. All rights reserved.