我正在使用postgres数据库来创建一个闪亮的应用程序,而且我无法让dplyr查询工作。
我有以下反应。 si.division是一个数据框,输入$ si_division是一个选择输入:
si_division_selected <- reactive({
si.division %>%
filter(division_name %in% input$si_division) %>%
select(division_code) %>%
unlist(use.names = FALSE)
})
我试图使用src_pool
将其传递给dplyr查询industry_division_code <- src_pool(pool) %>% tbl("si_alldata") %>%
translate_sql(division_code %in% si_division_selected()) %>%
select(industry_code)
我收到以下错误:
UseMethod中的错误:没有适用的方法来选择_&#39;适用于 课程对象&#34; c(&#39; sql&#39;,&#39;字符&#39;)
我也尝试过:
industry_division_code <- src_pool(pool) %>% tbl("si_alldata") %>%
filter(division_code %in% si_division_selected()) %>%
select(industry_code)
返回:
postgresqlExecStatement(conn,statement,...)出错:RS-DBI 驱动程序:(无法检索结果:错误:语法错误在或 靠近&#34; SI_DIVISION_SELECTED&#34;第5行:在哪里(&#34; division_code&#34; IN SI_DIVISION_SELECTED()))
如果我将文件加载到R而不是使用数据库,我没有问题:
industry_division_code <- si_alldata %>%
filter(division_code %in% si_division_selected()) %>%
select(industry_code)
答案 0 :(得分:0)
我认为如果你想继续使用si_division_selected()
作为过滤器中传递的值,那么你应该能够使用rlang
包来强制评估函数,所以行看起来像这样:filter(division_code %in% !! si_division_selected())
。虽然,您目前只将结果保存到变量的解决方案将是我的首选途径。