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中?
解决方案将在我闪亮的宇宙中带来革命性的变化。
答案 0 :(得分: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)
这不是每行的一个actionButton,但是您可以观察行选择事件并对此进行操作...在此示例中,我只是打印行,但是您可以执行任何操作。.
希望有帮助。