Skip to content

Instantly share code, notes, and snippets.

@infotroph
Last active January 28, 2018 19:44
Show Gist options
  • Save infotroph/19513e684c97b576e24c8b1058b082ee to your computer and use it in GitHub Desktop.
Save infotroph/19513e684c97b576e24c8b1058b082ee to your computer and use it in GitHub Desktop.
Why not .data in sql filter?
library(tidyverse)
# local df works as expected with or without .data
mtcars %>% select(mpg) %>% filter(mpg > 33)
# mpg
# 1 33.9
mtcars %>% select(.data$mpg) %>% filter(.data$mpg > 33)
# mpg
# 1 33.9
con = DBI::dbConnect(RSQLite::SQLite(), path = ":memory:")
copy_to(con, mtcars, "carsql", temporary=F)
# sql works as expected without .data
tbl(con, "carsql") %>% select(mpg) %>% filter(mpg > 33)
# # Source: lazy query [?? x 1]
# # Database: sqlite 3.19.3 []
# mpg
# <dbl>
# 1 33.9
# sql select works as expected with .data
tbl(con, "carsql") %>% select(.data$mpg) %>% filter(mpg > 33)
# # Source: lazy query [?? x 1]
# # Database: sqlite 3.19.3 []
# mpg
# <dbl>
# 1 33.9
# sql filter does not work with .data
tbl(con, "carsql") %>% select(.data$mpg) %>% filter(.data$mpg > 33)
# Error in eval_bare(call, env) : object '.data' not found
@infotroph
Copy link
Author

Possibly related to dplyr issue 2930.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment