我试图弄清楚,当我在UI中选择输入时,会立即将结果反映在页面上。 我的搜索结果让我研究了反应性表达和反应性价值观。但当我试图筛选数据的值时,我认为这会造成一些复杂情况,但我不知道应该如何处理这些数据。
筛选功能似乎不起作用。
这是错误消息:
Warning: Error in UseMethod: no applicable method for 'filter_' applied to an object of class "c('reactiveExpr', 'reactive')"
Stack trace (innermost first):
51: filter_
50: filter.default
49: filter
48: function_list[[i]]
47: freduce
46: _fseq
45: eval
44: eval
43: withVisible
42: %>%
41: eval
40: makeFunction
39: exprToFunction
38: observe
37: server
1: runApp
Error in UseMethod("filter_") :
no applicable method for 'filter_' applied to an object of class "c('reactiveExpr', 'reactive')"
我发现两个问题
第一个反应性语句是函数-您需要在它们后面添加括号()
。
其次,您需要对变量进行命名,特别是在R中命名变量data
从来都不是一件好事,而且您使用相同的两个对象命名,第一个是数据集本身,第二个是返回数据集的反应语句--这看起来很混乱,很有光泽。我将反应语句重命名为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."))
}
})
}
希望这能有所帮助!!