Сохранить переменный вывод из sparkalert - PullRequest
0 голосов
/ 24 мая 2018

Я хотел бы сохранить результат вывода (ИСТИНА / ЛОЖЬ) предупреждения блестяще (https://github.com/daattali/shinyalert).) Этот пост полезен для печати значения на консоль ( Как записать поле ввода блестяще-значимого как переменную ), но я не могу сохранить само значение как переменную.

library(shiny)
library(shinyalert)

ui <- fluidPage(
  useShinyalert()
)


server <- function(input, output) {

  shinyalert(
    title = "Warning",
    text = "Some warning",
    closeOnEsc = FALSE,
    closeOnClickOutside = FALSE,
    type = "warning",
    showConfirmButton = TRUE,
    showCancelButton = TRUE,
    confirmButtonText = "OK",
    cancelButtonText = "Cancel",
    animation = TRUE,
    callbackR = mycallback
  )


}


shinyApp(ui, server)

Это автоматически выведет на экран значение consolener.tl. Настройка sparklealer как переменной или значения в функциипохоже ничего не делает:

  mycallback <- function(value) {
    test_var=value
  }

1 Ответ

0 голосов
/ 24 мая 2018

В этом случае забудьте о функции, просто наблюдайте за предупреждением с помощью наблюдающего события, так как к значениям обратного вызова можно получить доступ с помощью ввода $ sparkalert.

alert<-shinyalert(
title = "Warning",
text = "Some warning",
closeOnEsc = FALSE,
closeOnClickOutside = FALSE,
type = "warning",
showConfirmButton = TRUE,
showCancelButton = TRUE,
confirmButtonText = "OK",
cancelButtonText = "Cancel",
animation = TRUE,
callbackR = NULL
)

observeEvent(input$shinyalert,
value<<-input$shinyalert
)

Примечание: я назначил переменную значения как глобальную, убедитесь, что вы действительно присвоили ее.

Редактировать: Кажется, что это присваивает значение только когда приложение закрывается, так как ничегоостальное происходит на сервере.Чтобы восполнить это, я добавил кнопку для целей тестирования, поскольку при выполнении другой команды на сервере присваивается значение.

observeEvent(input$test,
print(value)
)

Редактировать: если мы хотим использовать значение в последующих выражениях w/ o прежде чем делать что-то еще на сервере, мы должны будем использовать функцию callbackR.

mycallback<-function(value){
if(value==T){
  print(value) #commands
} else if (value==F){
  print(value) #commands
}
}

Примечание. Этот пакет все еще относительно новый и содержит много ошибок, например, если вы попытаетесь объединить эти цепочкимодалы вместе, как утверждает автор пакета, этот пакет может делать, он не работает.

shinyalert(
title = "What is your name?", type = "input",
callbackR = function(value) { shinyalert(paste("Welcome", value)) }
)

Вот ссылка на описание авторов.https://deanattali.com/blog/shinyalert-package/

Как отмечалось здесь ... https://github.com/daattali/shinyalert/issues/14 Если вы установите самую последнюю версию с github, многие из этих ошибок будут исправлены.Глядя на обнаруженные ошибки, связанные с этим пакетом, мы не единственные, у кого есть эта проблема.

...