此函数部分评估表达式,使用表中的信息来确定名称是否引用本地表达式或远程变量。这简化了 SQL 翻译,因为表达式不需要携带其环境 - 所有相关信息都合并到表达式中。
参数
- call
-
未计算的表达式,由
quote()
生成 - data
-
由数据库查询支持的惰性 DataFrame 。
- env
-
寻找本土值的环境
- vars
符号替换
partial_eval()
需要猜测您是否引用服务器上(远程)或当前环境(本地)中的变量。 100% 完美地做到这一点是不可能的。 partial_eval()
使用以下启发式:
-
如果 tbl 变量已知,并且符号与 tbl 变量匹配,则远程。
-
如果符号是本地定义的,则本地。
-
否则,远程。
您可以使用 local()
和 remote()
来强制计算,或者使用 .data
和 .env
代词进行整齐评估来覆盖猜测。
例子
lf <- lazy_frame(year = 1980, id = 1)
partial_eval(quote(year > 1980), data = lf)
#> year > 1980
ids <- c("ansonca01", "forceda01", "mathebo01")
partial_eval(quote(id %in% ids), lf)
#> id %in% c("ansonca01", "forceda01", "mathebo01")
# cf.
partial_eval(quote(id == .data$id), lf)
#> id == id
# You can use local() or .env to disambiguate between local and remote
# variables: otherwise remote is always preferred
year <- 1980
partial_eval(quote(year > year), lf)
#> year > year
partial_eval(quote(year > local(year)), lf)
#> year > 1980
partial_eval(quote(year > .env$year), lf)
#> year > 1980
# Functions are always assumed to be remote. Use local to force evaluation
# in R.
f <- function(x) x + 1
partial_eval(quote(year > f(1980)), lf)
#> year > f(1980)
partial_eval(quote(year > local(f(1980))), lf)
#> year > 1981
相关用法
- R dbplyr pivot_wider.tbl_lazy 将数据从长轴转向宽轴
- R dbplyr pivot_longer.tbl_lazy 将数据从宽转为长
- R dbplyr pull.tbl_sql 提取单列
- R dbplyr backend-teradata 后端:Teradata
- R dbplyr escape 转义/引用字符串。
- R dbplyr expand.tbl_lazy 扩展 SQL 表以包含所有可能的值组合
- R dbplyr distinct.tbl_lazy 子集不同/唯一行
- R dbplyr backend-sqlite 后端:SQLite
- R dbplyr build_sql 构建 SQL 字符串。
- R dbplyr mutate.tbl_lazy 创建、修改和删除列
- R dbplyr collapse.tbl_sql 计算查询的结果
- R dbplyr sql_expr 从 R 表达式生成 SQL
- R dbplyr get_returned_rows 提取并检查返回的行
- R dbplyr dbplyr_uncount “计数”数据库表
- R dbplyr count.tbl_lazy 按组计数观察值
- R dbplyr backend-odbc 后端:ODBC
- R dbplyr head.tbl_lazy 对第一行进行子集化
- R dbplyr db-quote SQL 转义/引用泛型
- R dbplyr copy_inline 在 dbplyr 查询中使用本地 DataFrame
- R dbplyr backend-oracle 后端:甲骨文
- R dbplyr backend-snowflake 后端:雪花
- R dbplyr lahman 缓存并检索 Lahman 棒球数据库的 src_sqlite。
- R dbplyr backend-redshift 后端:红移
- R dbplyr group_by.tbl_lazy 按一个或多个变量分组
- R dbplyr tbl_lazy 创建本地惰性 tibble
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Partially evaluate an expression.。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。