当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dbplyr partial_eval 部分评估表达式。


此函数部分评估表达式,使用表中的信息来确定名称是否引用本地表达式或远程变量。这简化了 SQL 翻译,因为表达式不需要携带其环境 - 所有相关信息都合并到表达式中。

用法

partial_eval(call, data, env = caller_env(), vars = NULL, error_call)

参数

call

未计算的表达式,由 quote() 生成

data

由数据库查询支持的惰性 DataFrame 。

env

寻找本土值的环境

vars

[Deprecated]:传递一个懒惰的框架data反而。

符号替换

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/tidyeval.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Partially evaluate an expression.。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。