【发布时间】:2015-01-29 00:45:40
【问题描述】:
在 R 中使用 dplyr 过滤 SQLite 数据库时遇到了一些意外行为。以下是我看到的示例:
library(dplyr)
# Some test data
df <- tbl_df(data.frame(
v1 = c('a', 'b', 'a', 'b'),
v2 = c('b', 'a', 'a', 'b'),
v3 = month.abb[1:4]))
db <- copy_to(src_sqlite('example.sqlite', create = TRUE), df)
filter(df, v1 == 'a' | v2 == 'a', v3 == 'Jan')
# Source: local data frame [1 x 3]
#
# v1 v2 v3
# 1 a b Jan
filter(db, v1 == 'a' | v2 == 'a', v3 == 'Jan')
# Source: sqlite 3.8.6 [example.sqlite]
# From: df [2 x 3]
# Filter: v1 == "a" | v2 == "a", v3 == "Jan"
#
# v1 v2 v3
# 1 a b Jan
# 2 a a Mar
我对使用数据库非常陌生,所以我觉得我在这里遗漏了一些与在过滤器中使用 | 有关的明显内容,因为这可以按预期工作:
filter(db, v1 == 'a', v3 == 'Jan')
# Source: sqlite 3.8.6 [example.sqlite]
# From: df [1 x 3]
# Filter: v1 == "a", v3 == "Jan"
#
# v1 v2 v3
# 1 a b Jan
在使用 dplyr 处理数据库时是否应该避免使用 |?
更新: dplyr issue #934
【问题讨论】: