Моя цель - обновить sh .Rdata объектов, когда пользователь подтверждает перезагрузку набора данных с помощью всплывающего всплывающего сообщения. Небольшой пример ниже. Перед загрузкой приложения я создал и сохранил 2 объекта (DatasetNumber1
и DatasetNumber2
), содержащих метку и данные для отображения.
Когда приложение запускается, я загружаю по умолчанию DatasetNumber1
объектов, спасибо в файл global.R
. Итак, теперь объекты test
и data
из DatasetNumber1
доступны через server.R
И ui.R
, что мне нужно (не в этом примере, а в моем полном приложении). Я хочу, чтобы пользователь мог выбрать другой набор данных в раскрывающемся списке, чтобы обновить sh глобальные объекты R и, в конце концов, построить график.
Оператор print
в server.R после того, как я Выбрал другой набор данных в раскрывающемся списке, нажал кнопку Load
и подтвердил с помощью shinyalert, подтверждает, что ввод раскрывающегося списка изменился, но оператор load
не обновляет объекты sh R.
Я пытался сделать загрузку реактивной прямо в скрипте global.R
, но закончил с тем же результатом. Может быть, рендеринг происходит быстрее, чем загрузка, и поэтому обновленные данные не учитываются для рендеринга ...
В любом случае я не хочу перезагружать ни приложение, ни сеанс.
Спасибо!
# inputCreation.R
test <- "IamDatasetNumber1"
data <- c(1, 3, 6, 4, 9)
save(test, data, file = "./Test/DatasetNumber1.Rdata")
test <- "IamDatasetNumber2"
data <- c(2, 7, 9, 12, 13)
save(test, data, file = "./Test/DatasetNumber2.Rdata")
# global.R
library(shiny)
library(shinyjs)
library(shinyalert)
load("DatasetNumber1.Rdata")
# ui.R
shinyUI(
fluidPage(
useShinyjs(),
div(
id = "main_page",
fluidRow( # -------------------------------------------------------
column(
2, offset=0,
selectInput("dropdown_dataset", "Dataset :", choices=c("DatasetNumber1", "DatasetNumber2"), selected="DatasetNumber1")
),
column(
1, offset=0,
useShinyalert(),
actionButton("button_dataset", "Load"),
)
),
fluidRow( # -------------------------------------------------------
uiOutput("test_text")
),
fluidRow( # -------------------------------------------------------
plotOutput("test_plot")
)
)
)
)
# сервер .R
shinyServer(
function(input, output, session) {
observeEvent(input$button_dataset, {
shinyalert(title = "Are you sure?",
text = "This action can take a while",
type = "warning",
closeOnEsc = TRUE,
closeOnClickOutside = TRUE,
showCancelButton = TRUE,
showConfirmButton = TRUE,
confirmButtonText = "OK",
confirmButtonCol = "#AEDEF4",
cancelButtonText = "Cancel",
inputId = "shinyalert",
callbackR = function(x){
if(x){
showModal(modalDialog("Loading...", footer=NULL))
print(paste(input[["dropdown_dataset"]],sep=""))
load(paste(input[["dropdown_dataset"]],".Rdata",sep=""))
removeModal()
}
}
)
})
output$test_text <- renderText(test)
output$test_plot <- renderPlot(plot(data))
}
)