當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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.。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。