【发布时间】:2021-09-16 02:23:22
【问题描述】:
我正在处理一个业务问题,我想根据用户从列表中提供的输入在闪亮的应用程序中过滤数据库中的数据。
这是仅在从数据库中收集数据后才起作用的 sn-p,这在计算上是昂贵的。
reactive({
my_database_data %>%
collect() %>%
filter(
if (!!input$list != 'All')
(branch == !!input$list
) else TRUE)
})
我想实现同样的目标,但直接从数据库中实现。
reactive({
my_database_data %>%
filter(
if (!!input$list != 'All')
(branch == !!input$list
) else TRUE)
})
不太确定上面的 if-else 语句。
【问题讨论】:
-
不清楚您遇到的问题是什么。代码是否适用于前者(使用
collect()),但不适用于后者?我想有两种可能的解释: 1. 不知何故,filter与远程源的工作方式不同。 2. 代码中的某些内容需要本地数据(在这种情况下,在filter()之后添加collect()可能会使其工作)。 -
我
collect()第一次工作的代码。但我不想在运行汇总函数之前收集。 -
我理解不想
collect()。但是,如果您颠倒filter()和collect()的顺序,代码是否有效? (如果collect()的成本很高,则使用collect(n = 100)或其他方法可能用于诊断目的。)如果它不起作用,则表明filter()没有被转换为SQL以你想要的方式。