max(。)中的错误:使用dplyr dbplyr和bigrquery时参数的“类型”(列表)无效

时间:2019-12-04 00:48:40

标签: r dbplyr bigrquery

我正在使用dplyr在bigquery表上运行一些非常简单的dbplyr代码

transactions %>% select(date) %>% max(.)

产生错误

  

max(。)中的错误:参数的“类型”(列表)无效

我检查了

  • 我正在按预期查询查询的表(确实如此-其他dplyr操作有效)
  • 我可以过滤可能的NA,但不会删除任何记录(没有NA)

还请注意,类似数据框上的类似代码似乎可以正常工作,例如

iris %>% select(Sepal.Length) %>% max
# [1] 7.9

2 个答案:

答案 0 :(得分:0)

您尝试过max(unlist(。))吗?

例如:

my.list = list(1,2,3,4)
# This produces an error
max(my.list)
# This produces 4
max(unlist(my.list))

您也可以尝试do.call(max,my.list)。

答案 1 :(得分:0)

dbplyr所做的大部分工作是将dplyr命令转换为数据库代码(在您的情况下为bigquery)。这样做的代价是并非所有R命令都可以翻译。通常,您需要遵循标准的dplyr语法才能定义翻译。

所以

transactions %>% select(date) %>% max(.)

使用R数据帧。在您使用的上下文中定义的max(.)可能没有翻译。

但是以下各项应能工作,因为它遵循标准的dplyr语法:

transactions %>% select(date) %>% summarise(max_date = max(date))

因此dbplyr可以将其转换为数据库代码。

要检查dbplyr已翻译的基础数据库查询,可以使用命令show_query()。例如:

transactions %>% select(date) %>% summarise(max_date = max(date) %>% show_query()