Я проводил некоторые тесты с выражениями observe
и reactive
, когда только что построил выражение, которое дает мне два разных значения для одного и того же объекта, внутри и снаружи if
.Небольшой пример:
library(shiny)
ui <- fluidPage()
server <- function(input, output, session) {
a <- 1
b <- 2
observe({
if(a != b) {
print(paste0("inside ", a))
a <- b
}
print(paste0("outside ", a))
invalidateLater(1000)
})
}
shinyApp(ui, server)
По иронии судьбы, по крайней мере для меня, объект «a» вне if получает значение, назначенное внутри, но собственный «a» изнутри не может «видеть» обновление.
Может ли кто-нибудь объяснить мне, почему это происходит, и как я могу сделать так, чтобы условный тест тоже выглядел, если значение изменилось, например reactivePoll
, но используя его только для обновления виджетов вместо получения значения?