r - 根据其他反应性对象过滤反应性对象,而两者都依赖于第三个反应性对象
问题描述
我正在尝试使用其他反应对象“#3”过滤反应对象“#4”,但没有成功,我认为问题在于它们都依赖于另一个反应对象“#2”。这张图片应该有帮助:
这是reprex
:
library(shiny)
library(DT)
library(dplyr)
dat <- as.data.frame( list(
X = c("A", "A", "B", "B", "C"),
Y = c(1,2,3,4,5)
))
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("myinput", "Input:",min = 1, max = 5,value = 3)
),
mainPanel(
br(),
fluidRow(column(2, DTOutput('table_data'))),
br(),
fluidRow(column(2, DTOutput('table_filtered'))),
br(),
fluidRow(column(2, DTOutput('table_filtered_not_A'))),
br(),br(),
fluidRow(column(2, DTOutput('table_grouped')))
)
)
)
server <- function(input, output) {
dat_rv <- reactiveValues(df = dat)
dat_filtered <- reactive({
dat_rv$df %>%
filter(
!isTruthy( input$myinput ) | Y <= input$myinput
)
})
dat_not_A <- reactive({
dat_not_A <- dat_filtered() %>%
filter(X != "A") %>%
select(X)
})
dat_grouped <- reactive({
dat_grouped <- dat_filtered() %>%
filter(X %in% dat_not_A()) %>% # HERE IS THE PROBLEM?
group_by(X) %>%
summarise(Y = sum(Y))
return(dat_grouped)
})
output$table_data = renderDT(dat, options = list(dom = 't'), rownames = FALSE)
output$table_filtered = renderDT(dat_filtered(), options = list(dom = 't'), rownames = FALSE)
output$table_filtered_not_A = renderDT(dat_not_A(), options = list(dom = 't'), rownames = FALSE)
output$table_grouped = renderDT(dat_grouped(), options = list(dom = 't'), rownames = FALSE)
}
shinyApp(ui = ui, server = server)
我也尝试过使用隔离,但它不起作用。我错过了什么吗?
此致。
解决方案
你需要使用:
dat_grouped <- reactive({
dat_grouped <- dat_filtered() %>%
filter(X %in% unique(dat_not_A()$X)) %>%
group_by(X) %>%
summarise(Y = sum(Y))
return(dat_grouped)
})
并不是:
dat_grouped <- reactive({
dat_grouped <- dat_filtered() %>%
filter(X %in% dat_not_A()) %>%
group_by(X) %>%
summarise(Y = sum(Y))
return(dat_grouped)
})
推荐阅读
- ionic-framework - 如何在 Ionic 3 中使用 PayPal 修复“对象(...)不是函数错误”
- javascript - Javascript模仿Chrome“+”按钮
- php - 如果值在 foreach 循环 + php 中不匹配,则跳过步骤
- c# - Oracle dB 自动检索新记录
- java - 检查一维数组是否是另一个二维数组的每一行的子集
- svn - svn 合并基于 xml 的文件
- class - 在另一个类中使用类对象?还是只使用字段?
- java - 如何在使用spring和@Transaction时将全局变量从一个类发送到另一个类?
- ruby - XML 解析破碎的文本
- hyperledger-fabric - 如果提交节点与网络断开连接,其他背书节点和提交节点会提交交易吗?