0

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

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

产生错误

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

我已经检查过了

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

另请注意,类似 data.frame 上的类似代码似乎有效,例如

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

2 回答 2

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()
于 2019-12-04T04:07:39.800 回答
0

Have you tried max(unlist(.))?

Take for example:

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

You could also try do.call(max,my.list).

于 2019-12-04T01:27:08.780 回答