SuperAPI AI 工具集

tidyverse-patterns

数据与分析

查看项目

更新于 10-15 08:14

技能介绍

用途

本技能用于在编写 tidyverse R 代码时提供现代最佳实践,目标环境为 dplyr 1.1+ 与 R 4.3+。核心原则包括:优先使用现代 tidyverse 模式(dplyr 1.1+ 特性、原生管道、当前 API);优化前先做性能剖析(profvis、bench);先写可读代码,仅在必要时且剖析之后再优化;遵循 tidyverse 风格指南,保持命名、空格与结构一致。

主要能力

管道

始终使用原生管道 |> 而非 magrittr 的 %>%,R 4.3+ 已提供所需全部特性。

连接语法与质量控制

使用 join_by() 替代字符向量,支持不等值连接、滚动连接与重叠连接。可用 relationship 声明基数以校验连接假设,unmatched = "error" 捕获意外未匹配,na_matches = "never" 防止 NA 静默匹配,交互时可用 tidylog:: 前缀验证连接结果。

数据掩码与 tidy 选择

区分数据掩码函数(arrange、filter、mutate、summarise)与 tidy 选择函数(select、relocate、across)。函数参数用 {{}}(embrace),字符向量用 .data[[]],多列用 across()。

分组与列操作

使用 .by 做按操作分组(始终返回未分组结果),pick() 在数据掩码函数内选择列,across() 对多列应用函数,reframe() 生成多行摘要。

NA 安全过滤

用 filter_out() 替代条件取反,因为取反会静默丢弃 NA;多列 OR/AND 过滤可用 when_any() 与 when_all()(dplyr 1.2+)。

重编码与条件更新

用 replace_when() 做原地条件更新,避免 case_when() 配合 .default = x 的重复;当所有情况都应被处理时,用 case_when() 配合 .unmatched = "error"。

序列化

使用 qs2 进行快速序列化(qs 的后继,不向后兼容),文件扩展名为 .qs2。

purrr 现代模式

用 map() |> list_rbind() 替代已被取代的 map_dfr(),用 list_cbind() 替代 map_dfc();用 walk() 处理副作用(写文件、绘图);用 in_parallel() 跨核心扩展。

stringr 字符串处理

优先使用 stringr 而非 base R 字符串函数,具有一致的 str_ 前缀与字符串优先的参数顺序,天然适配管道且向量化。涵盖检测、提取、替换、拆分、长度、截取、拼接、模板、填充、换行、大小写转换,以及 fixed()、regex()、coll() 等模式辅助函数。

向量化与性能

使用向量化操作与类型稳定的 purrr 函数(map_dbl、map_chr),避免类型不稳定的 sapply() 与简单操作中的显式循环。

使用方式

本技能以模式对照与代码示例的形式给出,包含“推荐写法”与“应避免写法”的并列示例,可直接在编写 tidyverse R 代码时参照。文档还提供从 base R 到现代 tidyverse、从旧版 tidyverse 到新版模式的迁移对照表,例如 subset() → filter()、aggregate() → summarise(..., .by =)、gather()/spread() → pivot_longer()/pivot_wider()、separate() → separate_wider_delim()、extract() → separate_wider_regex(),以及被取代的 purrr 函数映射。

适用场景

适用于编写或重构 tidyverse R 代码、进行数据连接与校验、分组汇总、多列批量操作、字符串清洗、函数式迭代与并行处理,以及从 base R 或旧版 tidyverse 迁移到现代模式的场景。

限制

资料未提供该技能的安装命令、运行环境依赖、许可与收费信息,暂未提供。部分特性有版本要求(如 dplyr 1.1+、dplyr 1.2+、purrr 1.0+、purrr 1.1.0+、R 4.3+),使用前需确认版本。qs2 与 qs 不向后兼容。