Я создаю блестящее приложение, которое позволит пользователям загружать данные и отображать содержимое на главной панели. Есть две кнопки действий, одна для отображения некоторых примеров данных, а другая кнопка действий для отображения содержимого загруженного файла данных. если пользователь не загрузил какой-либо файл данных, то при нажатии на кнопку второго действия должно появиться сообщение «сначала загрузите данные». Я изо всех сил пытаюсь реализовать эту вторую кнопку действия, поэтому любая помощь очень ценится.
Я пытался использовать reactiveVal ()
, но он не работает со второй кнопкой действия. Я думаю, что мне нужно каким-то образом сохранить загруженный набор данных в объект, который можно получить с помощью второй кнопки действия.
library(tidyverse)
library(shiny)
library(shinyWidgets)
library(DT)
options(shiny.maxRequestSize=30*1024^2)
recommendation <- tibble(Account = c("Axis", "HSBC", "SBI", "ICICI", "Bandhan Bank", "Axis", "HSBC", "SBI", "ICICI", "Bandhan Bank"),
Product = c("Bank", "FBB", "FBB", "FBB","FBB","SIMO", "SIMO", "SIMO", "SIMO", "SIMO"),
Region = c("North", "South", "East", "West", "West", "North", "South", "East", "West", "West"),
Revenue = c(2000, 30000, 1000, 1000, 200, 200, 300, 100, 100, 200))
ui <- fluidPage(
titlePanel("Example"),
sidebarLayout(
sidebarPanel(
fileInput("Upload", "Upload your own Data"),
actionButton("Example", "Show Example Data instead"),
actionButton("data", "Show New data")
),
mainPanel(
column(DT::dataTableOutput('showdata'), width = 12),
)
)
)
# Server Logic
server <- function(input, output) {
my_data <- reactiveVal()
observeEvent(input$Upload, {
tmp <- read.csv(input$Upload$datapath)
my_data(tmp)
})
observeEvent(input$Example, {
my_data(recommendation)
})
observeEvent(input$data, {
my_data()
})
output$showdata = renderDT(my_data(), rownames = FALSE, class = "display nowrap compact", filter = "top",
options = list(
scrollX = TRUE,
scrollY = TRUE,
autoWidth = FALSE))
}
# Run the application
shinyApp(ui = ui, server = server)
При нажатии кнопки действия «показать новые данные» должны отображаться данные, которые были простозагружено. Однако, если нет загруженных данных, то в сообщении должно быть предложено загрузить набор данных.