【问题标题】:Creating reactive ActionButtons in a Shiny app在闪亮的应用程序中创建反应式操作按钮
【发布时间】:2019-05-02 17:22:36
【问题描述】:
library(shiny)

# ui ##########################

ui <- fluidPage(

   fileInput("csv", label="",
      multiple = TRUE,
      accept = c("text/csv", ".csv")),

   tags$hr(),

   actionButton("show.tbl", "SHOW TABLE"),

   tableOutput("my_tbl")
   )


# server #########################

server <- function(input, output) {

   tbl <- data.frame(Example = LETTERS[1:10]) # will be reactive in reality

   output$my_tbl <- renderTable({
      if(input$show.tbl == 1)
         tbl
    })
 }

# app ######################

shinyApp(ui, server)

因此,我希望此列每行有两个按钮。 第一个按钮应过滤输入文件并显示结果表。 第二个按钮应执行复杂的验证算法。

如何将 actionButtons 响应式添加到 tableOutput?

在我闪亮的宇宙中,一个解决方案将是革命性的。谢谢

【问题讨论】:

  • 请不要使用rm(list=ls()) 发布代码。如果有人看不到它,他们可能会删除所有工作区...
  • 你能澄清一下“表格的每一行变成actionButtons”吗?你的意思是你想要,例如,每行上的一个复选框,用于子集数据,然后转换并稍后显示?
  • 每次我需要为每一行设置一个“操作按钮”时,我都会使用带有 selection='single' 的 DT 包,并观察 _rows_selected 输入...如果您愿意,我可以给您举个例子..

标签: r csv button shiny


【解决方案1】:

使用 DT 的工作区:

library(shiny)
library(DT)

ui <- fluidPage(
    verbatimTextOutput(outputId = 'vb'),
    dataTableOutput(outputId = 'table')
)

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

    yourData <- reactive({
        return(mtcars)
    })

    output$vb <- renderPrint({
        req(input$table_rows_selected, cancelOutput = TRUE)
        row_id <- input$table_rows_selected

        row_selected <- yourData()[row_id,]

        return(row_selected)
    })

    output$table <- renderDataTable({

        datatable(
            data = yourData(),
            selection = 'single'
        )
    })
}

shinyApp(ui, server)

这不是每一行的动作按钮,但您可以观察行选择事件并对其进行操作...在此示例中,我只打印该行,但您可以做任何您想做的事情..

希望对你有帮助。

【讨论】:

  • 谢谢,这个解决方案让我走得更远。现在我可以通过选择输出表的行来过滤和显示我的输入 csv。但完美的是点击反应性出现的按钮。我编辑了原始问题。
  • 很高兴为您提供帮助^^。如果您发现如何包含操作按钮,请告诉我!
猜你喜欢
  • 2020-09-05
  • 2020-12-28
  • 1970-01-01
  • 2020-05-21
  • 2021-08-28
  • 2020-05-10
  • 2023-04-09
  • 2018-12-29
  • 2017-12-12
相关资源
最近更新 更多