がシャイニーにreactive
表現を使用する方法の一例である表示するものがあってはならないので、我々はデータを削除しました。このアプリは利用可能なテーブルのリストを表示します。ユーザーが1つのテーブルを選択すると、いくつかのボタンがReview
のDelete
という表に表示されます。
library(shiny)
library(DT)
ui <- fluidPage(
title = 'Empty Table Example',
fluidRow(
column(4,
uiOutput("dataAvailable_UI"),
uiOutput("controls_UI")
),
column(8, DT::dataTableOutput('reviewdata'))
)
)
server <- function(input, output, session) {
# similate the available tables in DB
availableDatasets <- c("mtcars","iris", "cars", "trees")
dataset <- reactive({
input$deleteBT # to update when data is deleted
# only return the corresponding table if user clicked on Review
if (is.null(input$ReviewBT) || input$ReviewBT == 0)
return(NULL)
dataName <- isolate(input$dropdownbox)
if (is.null(dataName) || !dataName %in% availableDatasets)
return(NULL)
# return the selected data
get(dataName)
})
output$reviewdata = DT::renderDataTable(dataset())
output$dataAvailable_UI <- renderUI({
# no data is selected
selectInput("dropdownbox", "Select a Table",
choices = c("", availableDatasets))
})
output$controls_UI <- renderUI({
# only shows the buttons if a dataset is selected
if (!is.null(input$dropdownbox) && nchar(input$dropdownbox) > 0)
div(
actionButton("ReviewBT", "Review Table"),
actionButton("deleteBT", "Delete Table")
)
})
observeEvent(input$deleteBT,{
# delete data and update the selectInput
dataName <- input$dropdownbox
if (dataName %in% availableDatasets) {
availableDatasets <<- availableDatasets[-match(dataName, availableDatasets)]
updateSelectInput(session, "dropdownbox", choices = c("",availableDatasets))
}
})
}
shinyApp(ui = ui, server = server)
リアクティブデータセットを使用して、表示するデータがない場合は「NULL」を返します。データテーブルは自動的に更新されます。 – Geovany
こんにちは@Geovanyあなたはあなたが念頭に置いているものの例や、もしあなたが持っているなら、例へのリンクを教えてくれますか? –