此函數部分評估表達式,使用表中的信息來確定名稱是否引用本地表達式或遠程變量。這簡化了 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.。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。