SuperAPI AI 工具集

tidy-evaluation

编程与开发

查看项目

更新于 10-16 06:21

技能介绍

用途:在编写 R 函数时,把列引用正确传递给 tidyverse 的数据掩码函数(dplyr、ggplot2、tidyr),解决包装函数后列名无法解析的问题。

主要能力:介绍数据掩码概念(数据框列优先于环境变量);给出常用模式速查,如单参数转发用 {{ var }}、... 直接转发到数据掩码、转发到 tidy-select 时用 c(...)、用字符串取列用 .data[[var]]、用字符向量用 across(all_of(vars))、用 .env$x 与 .data$x 消歧、用 across({{ var }}) 把选择桥接到数据掩码、用 transmute() 再 all_of() 把数据掩码桥接到选择、先赋值给列以避免双重求值。还说明参数行为分类(数据掩码、tidy-select、动态点)及其文档写法,以及命名参数、across()、if_all()/if_any() 等变换模式。

使用方式:在自定义函数中用 {{ }} 包裹参数并传给 summarise()、group_by()、pivot_longer() 等;需要接受字符向量时改用 .data[[var]] 或 all_of();函数参数可能与列名冲突时用 .env$ 前缀。

适用场景:开发可复用的 tidyverse 包装函数、需要同时支持列名与选择助手、在循环或 purrr::map 中按变量名批量计算。

限制与陷阱:{{ }} 只能包裹函数参数,用在非参数上会取到值而非表达式;在非数据掩码上下文中 {{ }} 会变成字面双花括号,!! 与 !!! 会变成逻辑非且不报错;表达式被注入多次会重复执行,需先赋值给列;tidy-select 与数据掩码语义不同,选择上下文不存在列名冲突。可通过 vignette("data-mask", package = "rlang") 等查看 rlang 文档。具体版本与依赖信息暂未提供。