Я обнаружил две проблемы,
первые реактивные операторы - это функции - вам нужно добавить скобки ()
после них.во-вторых, вам нужно поработать над именованием ваших переменных, особенно именование переменной data
никогда не бывает полезным в R, и вы называете два объекта одинаковыми: сначала сам набор данных, а затем реактивный оператор, возвращающий набор данных - этоКазалось, что этот спутанный блеск довольно много.Я переименовал реактивное заявление в dta
, и это решило его для меня.Вот полный код сервера
server <- function(input, output, session) {
dta <- reactive({
data
})
output$p1 <- renderText({
paste0("You currently live in ", input$Location, " and are contemplating a job offer in ", input$reLocation, ".")
})
values <- reactiveValues()
observe({
# req(input$Location,input$reLocation)
# browser()
values$LocationCost <- dta() %>% filter(UrbanArea == input$Location) %>% select(CostOfLivingIndex)
values$reLocationCost <- dta() %>% filter(UrbanArea == input$reLocation) %>% select(CostOfLivingIndex)
})
# observeEvent(input$Location, {
# values$LocationCost <- data %>%
# filter(UrbanArea == input$Location) %>%
# select(CostOfLivingIndex)
# })
#
# observeEvent(input$reLocation, {
# values$reLocationCost <- data %>%
# filter(UrbanArea == input$reLocation) %>%
# select(CostOfLivingIndex)
# })
output$p2 <- renderText({
if (values$LocationCost < values$reLocationCost) {
calc <- round(100* ((values$reLocationCost-values$LocationCost)/values$LocationCost), 2)
print(paste0("You need ", calc, "% increase in your after-taxes income in order to maintain your present lifestyle."))
} else {
calc <- round(100 * ((values$LocationCost-values$reLocationCost)/values$reLocationCost), 2)
print(paste0("You can sustain upto ", calc, "% reduction in after taxes income without reducing your present lifestyle."))
}
})
}
Надеюсь, это поможет !!